【发布时间】:2020-12-02 14:46:10
【问题描述】:
我正在编写 XSD 模式限制,并且我有以下有效字符串
- $name
- {.newvalue}
- {测试}
- $name.testing
以下无效
- {$testing}
- $testing}
- {正在测试
不允许大写或@符号。
我已经部分尝试了这个<xs:pattern value="\{\w?[a-z0-9A-Z\.]*\}|\$\w+(\.[\w]+)*"/>这个工作,但不满足所有条件
感谢任何帮助。
【问题讨论】:
我正在编写 XSD 模式限制,并且我有以下有效字符串
以下无效
不允许大写或@符号。
我已经部分尝试了这个<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.]+\}?
要弄清楚实际规则是什么并不容易:您尝试的正则表达式允许使用数字,但没有一个示例使用数字;并且您尝试的正则表达式明确允许大写,但您的文字表明不允许大写。为什么你特别提到'@'而不是其他标点符号?
【讨论】: