如何在 XSD 中编写正则表达式

How to write regex in XSD

我正在写 XSD 模式限制并且我有以下有效的字符串

以下无效

规则是以 ^ 或 { 开头的字符串。如果我们以 { 开头,那么下一个字符应该是 $ 并且单词应该以 } 结尾。不允许大写或@符号。

我试过这个<xs:pattern value="[\^\{].*\w+\}?"/>这项工作部分有效但不满足所有条件

感谢任何帮助。

您可以使用

<xs:attribute name="label">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="\^[a-z]+(\.[a-z]+)?|\{$[a-z]+(\.[a-z]+)?}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

XSD 正则表达式始终是锚定的,因此上述正则表达式中的两个备选方案必须匹配整个字符串。

他们匹配

  • \^[a-z]+(\.[a-z]+)? - ^ 字符,然后是 1+ 个小写 ASCII 字母,然后是 . 和 1+ 个小写 ASCII 字母的可选序列
  • | - 或
  • \{$ - {$ 子字符串
  • [a-z]+(\.[a-z]+)? - 1+ 个小写 ASCII 字母,然后是可选的 . 序列和 1+ 个小写 ASCII 字母
  • } - 一个 } 字符。