【问题标题】:RegExp only allowing strings not containing a set of prefixesRegExp 只允许不包含一组前缀的字符串
【发布时间】:2012-11-21 12:52:23
【问题描述】:

我找不到任何类似的问题,所以就这样吧。

我需要一个可以验证电话号码的正则表达式。因此,首先只允许使用数字、破折号和“+”。

困难的部分是只允许以以下集合中的任何字符串开头的表达式:

50  
51  
53  
57  
60  
66  
69  
72  
73  
78  
79  
88  

不应允许任何其他没有这些前缀的数字。

我将非常感谢任何提示!谢谢!

【问题讨论】:

  • 正则表达式在不同的程序中有所不同。 Grep 和 sed 有自己的正则表达式,python 有自己的,perl 有自己的等等。您使用的是哪种编程语言?
  • 对不起,我没有意识到这一点。我需要 .NET WebForms 3.5 Validation Controls 的这个表达式。

标签: .net regex string validation


【解决方案1】:

前缀部分很简单。 ^ 是一个锚点,代表字符串的开始。然后只需附加您想要的模式(我相信您希望允许加号作为第一个字符):

^\+?(?:50|51|53|57|60|66|69|72|73|78|79|88)[\d-]+$

请注意,$^ 对应,并确保您的字符串在电话号码后不包含非数字非破折号字符。

当然,最后的模式可以做得更具体,以禁止连续破折号之类的东西。

另请注意,.NET 中的 \d 匹配任何 Unicode 数字字符。如果这不是您想要的,请使用[0-9-]

【讨论】:

    【解决方案2】:

    您需要对此进行调整,但这是一个开始:

    ^(50|51|53|57|60|66|69|72|73|78|79|88)\d+$
                                           ^
                                           |
                                           -----This part probably needs 
                                                more constraints, depending on 
                                                your format
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 2014-06-12
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多