我使用正则表达式来验证具有以下条件的手机号码:
我的正则表达式如下所示:(我用“rubular”测试仪测试了这个)
^((0((?=\d* \d*#)[\d ]{,11})(#\d{,5})?)|(0(?:\d{,10})(#\d{,5})?)|(0((?=\d* \d*$)[\d ]{,11})))$
但它不适用于.net正则表达式引擎。
有人可以告诉我,在上面哪一部分与.net正则表达式引擎不兼容?如果我可以在上面的表达式中更改任何内容,它是否可以在.Net正则表达式引擎中工作?
答案 0 :(得分:2)
正则表达式中的唯一问题是您没有在任何地方指定起始范围..所以它应该是{0,11}
或{1,11}
而不是{,11}
< / p>
您也可以使用此简化的正则表达式
^(?=(\S*[\s]\S*|\S*)$)0(\s?\d){1,11}\s?(#(\s?\d){1,5})?\s?$
\S
匹配任何非空格字符
(\S*[\s]\S*|\S*)$
匹配0到多个非空格字符后跟一个空格后跟0到多个非空格字符,直到结束或它匹配所有非空格字符直到结束
(?=)
是一个positive lookahead
,用于检查是否出现特定模式,如果不匹配,则会显示!{/ p>