正则表达式与混合量词

时间:2018-06-26 21:08:55

标签: c# regex

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

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

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

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

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

更新

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

1 个答案:

答案 0 :(得分:1)

您可以考虑以下模式:

xspline(c(x,y), shape=1, border='blue' )

请参见regex demo

详细信息

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