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