2

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

  • +16085551212
  • +16089111212

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

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

4

2 回答 2

1

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

你可以用这样的正则表达式来做到这一点:(?!.+911.+)\+1[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}

于 2013-11-01T09:44:49.367 回答
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}
 ^^^^^^^^^^
于 2013-11-01T09:45:26.087 回答