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

时间:2012-09-24 23:01:48

标签: xml regex xsd

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

我目前有:

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

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

1 个答案:

答案 0 :(得分:2)

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

"+01 "
+01-
+4312345678912345678900

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

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

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

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

[未经测试。]