例如,我想验证包含电话号码的字符串,首先强制执行'+'后跟2位数字,然后执行数字的序列或连字符的单个实例或空间。字符串必须以数字结尾。
我目前有:
<xs:pattern value="\+\d{2}[- ]?[\d -]+[\d]"/>
但这并不限制字符串中空格或连字符的重复。如何实现这一目标?
答案 0 :(得分:2)
你说“......然后是一个数字或一个连字符或空格的单个实例的序列” - 从字面上看,这表明以下都是可以接受的(当它们以a结束时引用字符串空间):
"+01 "
+01-
+4312345678912345678900
看看你的代码,我猜你说的是非正式的,你想要的最好被描述为一个加号,两个数字,然后是一个由最多一个连字符或空格中断的数字序列,这些数字不能是最后。如果这是一个准确的释义,你可以尝试
\+\d{2}\d*[- ]?\d+
如果你想允许最多一个连字符和最多一个空格,它会变得更复杂,但它仍然可以表达。假设您不希望可以接受空的数字序列:
\+\d{2}(\d+|(\d*(-\d+| \d+)?))
[未经测试。]