XSD 中模式匹配的正则表达式
Regex for pattern matching in XSD
我正在编写 XSD 模式限制,并且我有以下有效字符串
- $名字
- {.newvalue}
- {测试}
- $name.testing
以下无效
- {$测试}
- $测试}
- {测试
不允许使用大写字母或@符号。
我试过这个<xs:pattern value="\{\w?[a-z0-9A-Z\.]*\}|$\w+(\.[\w]+)*"/>
这项工作部分有效但不满足所有条件
感谢任何帮助。
您可以使用
<xs:pattern value="$[a-z0-9]+(\.[a-z0-9]+)*|\{\.?[a-z0-9]+\}" />
XSD 正则表达式始终锚定在字符串 start/end 处,请参阅 regex demo。
详情
$[a-z0-9]+(\.[a-z0-9]+)*
- $
,一个或多个小写 ASCII 字母,然后是一个点和一个或多个小写 ASCII 字母的零个或多个序列
|
- 或
\{\.?[a-z0-9]+\}
- {
,一个可选的 .
,然后是 1 个或多个小写 ASCII 字母,然后是一个 }
字符。
尝试\{?$?[a-z.]+\}?
弄清楚实际规则是什么并不容易:您尝试的正则表达式允许数字,但 none 示例使用数字;并且您尝试的正则表达式明确允许大写,但您的文字表明不允许大写。为什么你特别提到'@',而不是其他标点符号?
我正在编写 XSD 模式限制,并且我有以下有效字符串
- $名字
- {.newvalue}
- {测试}
- $name.testing
以下无效
- {$测试}
- $测试}
- {测试
不允许使用大写字母或@符号。
我试过这个<xs:pattern value="\{\w?[a-z0-9A-Z\.]*\}|$\w+(\.[\w]+)*"/>
这项工作部分有效但不满足所有条件
感谢任何帮助。
您可以使用
<xs:pattern value="$[a-z0-9]+(\.[a-z0-9]+)*|\{\.?[a-z0-9]+\}" />
XSD 正则表达式始终锚定在字符串 start/end 处,请参阅 regex demo。
详情
$[a-z0-9]+(\.[a-z0-9]+)*
-$
,一个或多个小写 ASCII 字母,然后是一个点和一个或多个小写 ASCII 字母的零个或多个序列|
- 或\{\.?[a-z0-9]+\}
-{
,一个可选的.
,然后是 1 个或多个小写 ASCII 字母,然后是一个}
字符。
尝试\{?$?[a-z.]+\}?
弄清楚实际规则是什么并不容易:您尝试的正则表达式允许数字,但 none 示例使用数字;并且您尝试的正则表达式明确允许大写,但您的文字表明不允许大写。为什么你特别提到'@',而不是其他标点符号?