【问题标题】:Basic Regular Expression for a 'generic' phone number“通用”电话号码的基本正则表达式
【发布时间】:2011-09-13 21:30:43
【问题描述】:

我需要一个正则表达式(用于 ASP .NET 网站)来验证电话号码。它应该是灵活的,唯一的限制是:

  • 至少应为 9 位数字
  • 没有字母
  • 可以包含空格、连字符、单个 (+)

我搜索过 SO 和 Regexlib.com,但我得到的表达式有更多限制,例如英国电话或美国等

【问题讨论】:

    标签: c# asp.net regex validation


    【解决方案1】:

    这是超级通用的,只允许给定电话号码中的字符,包括#。它忽略任何格式模式。

    @"^([\(\)\+0-9\s\-\#]+)$"
    

    【讨论】:

      【解决方案2】:
      @"^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"
      

      这是我使用的。这将处理大多数情况下的通用电话号码验证。

      【讨论】:

        【解决方案3】:
        ^\s*\+?\s*([0-9][\s-]*){9,}$
        

        分解:

        ^           # Start of the string
          \s*       # Ignore leading whitespace
          \+?       # An optional plus
          \s*       # followed by an optional space or multiple spaces
          (
             [0-9]  # A digit
             [\s-]* # followed by an optional space or dash or more than one of those
          )
           {9,}     # That appears nine or more times
        $           # End of the string
        

        我更喜欢后一种方式编写正则表达式,因为以后更容易阅读和修改;大多数语言都有一个需要为此设置的标志,例如C# 中的RegexOptions.IgnorePatternWhitespace

        【讨论】:

        • 请注意,这是一种非常宽松的方法;它会接受像+--1---2345 - - - 678 9 - 这样的数字,并且只检查至少有九位数字并且加号只出现在开头。我想这就是你想要的。
        【解决方案4】:

        ^[0-9-+ ]+$

        <asp:RegularExpressionValidator runat="server" id="rgfvphone" controltovalidate="[control id]" validationexpression="^[0-9-+ ]+$" errormessage="Please enter valid phone!" />
        

        【讨论】:

          【解决方案5】:

          最好让用户填写他的国家,然后为该国家应用正则表达式。每个国家/地区都有自己的电话号码格式。

          【讨论】:

          • 完全正确 - 没有标准,因此很难提供一个全面匹配的正则表达式,而不使其过于通用以至于无法防止无效条目。
          • 我想要一种灵活的格式。这里 (SA) 没有严格的电话格式(例如 0711231234、071 123 1234、071-123-1234、(071) 123 1234 是可以接受的)。我想一个蒙面的编辑框是最好的前进方式。
          • 在这种情况下,我想一个正则表达式可以准确地接受 10 位数字并过滤掉 (, ),然后空格就可以了。
          【解决方案6】:

          \+?[\d- ]{9,}

          这将匹配可选地以加号开头的数字,然后是至少九个字符长的破折号和空格。

          虽然这意味着破折号和空格计入九个字符。 我会删除破折号和空格,然后使用

          \+?[\d]{9,}

          【讨论】:

            猜你喜欢
            • 2017-04-09
            • 2017-09-23
            • 2014-02-15
            • 1970-01-01
            • 2016-02-02
            相关资源
            最近更新 更多