如何在 XSD 架构中使用正则表达式来限制字符串中重复的某些字符



例如,我想验证一个包含电话号码的字符串,以首先强制使用"+",后跟 2 位数字,然后是数字序列或连字符或空格的单个实例。字符串必须以数字结尾。

我目前有:

<xs:pattern value="+d{2}[- ]?[d -]+[d]"/>

但这并不限制字符串中空格或连字符的重复。如何实现这一点?

你说"...然后是数字序列或连字符或空格的单个实例" - 从字面上看,这表明以下内容都是可以接受的(当字符串以空格结尾时,我引用它们):

"+01 "
+01-
+4312345678912345678900

看看你的代码,我猜你是非正式的,你想要的最好描述为一个加号,两位数,然后是最多被一个连字符或空格打断的数字序列,这不能是最终的。 如果这是一个准确的释义,你可以尝试

+d{2}d*[- ]?d+

如果你想允许最多一个连字符和一个空格,它会变得复杂得多,但它仍然是可以表达的。 假设您不希望接受空数字序列:

+d{2}(d+|(d*(-d+| d+)?))

[未经测试。

最新更新