前面带有可选数据的正则表达式

时间:2009-11-11 21:27:19

标签: regex

我有一个看起来像这样的正则表达式

((1010xxx)?(\d{11}|\d{10}|\d{7})+)  

基本上我希望它匹配

8085551234
5551234个
10102338085551234

它应该失败 1010233

这更适用于在xsd上进行验证而不是在实际匹配器上进行验证。

PS。 我试图将美国7到11位数的电话号码与前面的可选1010xxx相匹配。如果它是1010xxx它也不应该通过。 xxx是任意3位数。

1 个答案:

答案 0 :(得分:2)

如果您只想确保它是一个7,10或11位数字符串,请确保如果它只有7位数字,则不以“1010”开头,您可以在使用之前使用否定先行断言匹配\d{7},即:

((\d{11}|\d{10}|(?!1010)\d{7})+)