C# 正则表达式是否匹配

C# 正则表达式是否匹配,c#,regex,C#,Regex,我有以下代表电话号码的号码: +16085551212 +16089111212 我目前有[0-9][2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4},这两个数字都适用 但是,我无法确定第6个和第7个数字不允许为11的标准,以避免可能的911引用,如上图所示。通过阅读,我认为这可能是某种形式的前瞻,但我不完全确定,也不知道如何在现有模式中实施。我假设您正在寻找一种方法来排除号码中的任何911 你可以用这样的正则表达式:(?!.911.+)\+1[2-9][0-9]{2}[2

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

  • +16085551212
  • +16089111212
我目前有
[0-9][2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}
,这两个数字都适用


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

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

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

C#广泛地支持lookarounds,所以你很乐意去做。以下是如何按照您描述的特定方式使用它们:

.[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}
 ^^^^^^^^^^

如果您能解释一下如何使用给定的应答功能,我们将不胜感激:)您使用的是什么语言/系统?这在这里非常重要,因为事实上,前瞻断言将是规范的解决方案(很好的研究!)——但并非所有的实现都支持它们。很抱歉没有包括,它是一种C#execution。我认为您应该能够使用负前瞻来解决这个问题。当人们问清楚的问题时(比如“什么技术?”),通常是提示你应该编辑你的问题并添加更多标签。此外,由于您可以编辑您的问题,因此您不需要在即时回答您自己的问题时发表评论-如果您还有更多问题要添加,只需编辑即可。标准只希望将其放在原始问题中指定的位置,这是一个有3个要求的培训问题,试着用一个正则表达式表达出来谢谢Mike,看看acheong87在这种情况下的答案。很快会接受,会做背景阅读,也会在原始帖子中链接以进一步理解,谢谢!