我需要为字符串列编写一个限制,以便它将包含 20 个字母和以下 3 个:(. , -)。
如何做到这一点?
谢谢。
最佳答案
请尝试这个:
<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
- \,字面上匹配字符
- \- 匹配字符 - 字面意思
所以基本上这将匹配所有这些
- aabbbcaabbbcaabbbcac,,-
- ,,-aabbbcaabbbcaabbbcac
- dd,aabbbc-aabbbc,aabbbc
length value="23"
强制字符串总长度为 23 个字符,正则表达式强制总长度中的三个字符位于逗号、连字符和句点之间。
关于字符串值的 XSD 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21985181/