关于C#:带有混合量词的正则表达式

Regex with mix quantifiers

我正在尝试使用RegEx验证批注在ASP.Net MVC应用程序中验证电话号码。

除了允许的字符和最大-最小长度,我想在文本中的任何地方最多允许2个空格。我已经尝试了以下RegEx,但无法正常工作。

1
^(\\+)?(\\d|\\s{0,2}|-|\\(|\\)){8,16}$

如果我在不验证空格数的情况下删除{0,2},效果很好。

我尝试了不同的组合,但是没有运气。

更新

" 1234 5 6"应该有效,但" 123 4 5 6"应该无效。


您可以考虑以下模式:

1
^(?!(?:\\S*\\s){3})(?=.{8,16}$)\\+?[\\d\\s()-]+$

请参阅正则表达式演示。

详细信息

  • ^-字符串开始
  • (?!(?:\\S*\\s){3})-不允许有3个或更多空白字符
  • (?=.{8,16}$)-字符串长度必须在8到16之间(没有换行符,或者将.替换为[\\s\\S])
  • \\+?-可选的+
  • [\\d\\s()-]+-1个或多个数字,空格,()-
  • $-字符串的结尾。