问题描述
我正在编写XSD模式限制,并且具有以下有效的字符串
- $ name
- {。newvalue}
- {测试}
- $ name.testing
以下内容无效
- {$ testing}
- $ testing}
- {测试
不允许使用大写字母或@符号。
我已经部分<xs:pattern value="\{\w?[a-z0-9A-Z\.]*\}|\$\w+(\.[\w]+)*"/>
尝试过这项工作,但不满足所有条件
感谢您的帮助。
解决方法
您可以使用
<xs:pattern value="\$[a-z0-9]+(\.[a-z0-9]+)*|\{\.?[a-z0-9]+\}" />
XSD正则表达式始终固定在字符串开始/结束处,请参见regex demo。
详细信息
-
\$[a-z0-9]+(\.[a-z0-9]+)*
-$
,一个或多个小写ASCII字母,然后是零或mre的点序列以及一个或多个小写ASCII字母 -
|
-或 -
\{\.?[a-z0-9]+\}
-{
,一个可选的.
,然后是1个或多个小写ASCII字母,然后是}
字符。
尝试\{?\$?[a-z.]+\}?
弄清楚实际规则是不容易的:您尝试的正则表达式允许使用数字,但是没有一个示例使用数字。并且您尝试使用的正则表达式明确允许使用大写字母,但是您的文字表明不允许使用大写字母。为什么要特别提及“ @”,而不提及其他标点字符?