正则表达式或不匹配

时间:2013-11-01 09:39:46

标签: c# regex

我有以下数字代表电话号码:

  • 16085551212
  • 16089111212

我目前已经.[0-9][2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}适用于这两个数字。

然而,我无法弄清楚第6和第7个数字不被允许为11的标准,以避免可能的911引用,如上所示。从阅读中我可以预期它可能是某种形式的前瞻,但我不完全确定,也不知道如何实现已有的模式。

2 个答案:

答案 0 :(得分:1)

我假设您正在寻找一种方法来排除数字中的任何911

您可以使用这样的正则表达式执行此操作:(?!.+911.+)\+1[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}

答案 1 :(得分:1)

C#广泛支持外观,所以你很高兴。以下是如何以您描述的特定方式使用它们:

.[0-9][2-9][0-9]{2}[2-9](?!11)[0-9]{2}[0-9]{4}
                        ^^^^^^

这称为否定先行断言

但是,这将使您的正则表达式更加透明,尤其是对其他人而言:

.(?!\d*911)[0-9][2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}
 ^^^^^^^^^^