【问题标题】:XSD restriction for string value字符串值的 XSD 限制
【发布时间】:2014-02-24 21:04:35
【问题描述】:

我需要为一个字符串列写一个限制,这样它将包含 20 个字母和以下 3 个:(. , -)。

如何做到这一点?

谢谢。

【问题讨论】:

    标签: xsd restriction


    【解决方案1】:

    请试试这个:

    <xs:element name="someString">
      <xs:simpleType>
        <xs:restriction base="xsd:string">
          <xs:pattern value="([\w]*[\.\,\-]?[\w]*[\.\,\-]?[\w]*[\.\,\-]?[\w]*)"/>
            <xs:length value="23"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    

    说明:

    [\w\.\,\-]{0,20} 匹配下面列表中的单个字符

    • 量词:

      0到20次之间,尽可能多次,按需回馈[贪心]

      • \w 匹配任意单词字符 [a-zA-Z0-9_]
      • \。匹配字符 .literally
      • \,匹配字符,字面意思
      • \- 匹配字符 - 字面意思

    所以基本上这将匹配所有这些

    1. aabbbcaabbbcaabbbcac,,-
    2. ,,-aabbbcaabbbcaabbbcac
    3. dd,aabbbc-aabbbc,aabbbc

    length value="23" 强制总字符串为 23 个字符,正则表达式强制总长度的三个字符在逗号、连字符和句点之间。

    【讨论】:

    • 你能解释一下吗?什么是 \w 以及为什么它应该起作用?谢谢。
    • @YevgeniGrinberg 我已经添加了解释。你也可以在这里regex101.com 试试这个
    • 这并不限制字母的数量为 20 个,.,- 的数量为 3 个。
    • @YevgeniGrinberg 我已经更新了我的答案。请验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2021-08-12
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多