如何更改此正则表达式以使用.Net正则表达式引擎?

时间:2012-12-07 11:17:51

标签: c# .net regex vb.net

我使用正则表达式来验证具有以下条件的手机号码:

  1. 最多12个数字。
  2. 它应该从零开始。
  3. 只允许一个空格(在非定义点)
  4. 后跟一个长度最多为五位的可选分机号码,不包括#符号
  5. 我的正则表达式如下所示:(我用“rubular”测试仪测试了这个)

    ^((0((?=\d* \d*#)[\d ]{,11})(#\d{,5})?)|(0(?:\d{,10})(#\d{,5})?)|(0((?=\d* \d*$)[\d ]{,11})))$
    

    但它不适用于.net正则表达式引擎。

    有人可以告诉我,在上面哪一部分与.net正则表达式引擎不兼容?如果我可以在上面的表达式中更改任何内容,它是否可以在.Net正则表达式引擎中工作?

1 个答案:

答案 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>