【问题标题】:Phone Number Validation Javascript电话号码验证 Javascript
【发布时间】:2011-09-05 22:20:44
【问题描述】:

我希望用户只允许以下格式的电话号码

xxx-xxx-xxxx 或 xxxxxxxxxx 仅限所有数字。有人可以建议一个正则表达式来做到这一点吗?

【问题讨论】:

  • 查看此链接:tinyurl.com/3wdk4lh
  • 这似乎很简单。请查看regular-expressions.info 以开始使用。
  • 这不是公共网页吗?因为居住在其他国家/地区的人在电话号码被拒绝时可能会有些恼火。
  • 我同意 nnnnnn。但是,在某些用例中,它会更可取。我有客户只运送到美国和加拿大,因此允许其他数字格式无法满足他们的要求。
  • 当我想到电话号码验证时,我想到的不仅仅是长度。注册电话号码时我最喜欢做的事情是911-911-9111,因为缺少任何需要电话号码的东西。

标签: javascript regex validation string


【解决方案1】:

使用这个:

/^(1-?)?(([2-9]\d{2})|[2-9]\d{2})-?[2-9]\d{2}-? \d{4}$/

【讨论】:

    【解决方案2】:

    类似这样的:

    \d{3}-\d{3}-\d{4}|\d{10}
    

    【讨论】:

      【解决方案3】:

      以下正则表达式可用于验证美国境内已定义和可操作(截至 2011 年 6 月)的电话区号:

      var area_code_RE=
       '(2(?:0[1-35-9]|1[02-9]|2[4589]|3[1469]|4[08]|5[1-46]|6[0279]|7[068]|8[13])'+
       '|3(?:0[1-57-9]|1[02-9]|2[0139]|3[014679]|47|5[12]|6[019]|8[056])'+
       '|4(?:0[126-9]|1[02-579]|2[3-5]|3[0245]|4[023]|6[49]|7[0589]|8[04])'+
       '|5(?:0[1-57-9]|1[0235-8]|[23]0|4[01]|5[179]|6[1-47]|7[01234]|8[056])'+
       '|6(?:0[1-35-9]|1[024-9]|2[0368]|3[016]|4[16]|5[01]|6[012]|7[89]|8[29])'+
       '|7(?:0[1-4678]|1[2-9]|2[047]|3[1247]|4[07]|5[47]|6[02359]|7[02-59]|8[156])'+
       '|8(?:0[1-8]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])'+
       '|9(?:0[1346-9]|1[02-9]|2[0578]|3[15679]|4[0179]|5[124679]|7[1-35689]|8[0459])'+
       ')';
      

      【讨论】:

        【解决方案4】:
        var rx=/^\d{3}\-?\d{3}\-?\d{4}$/;
        if(rx.test(string)){
        //10 diget number with possible area and exhange hyphens
        }
        else //not
        

        【讨论】:

        • 这将接受 000-000-0000。我更喜欢潘克。我个人会在他所做的地方添加[2-9] 序列,尽管我知道请求者说“所有数字”......
        【解决方案5】:

        虽然一般电话号码验证比您要解决的问题更大,但我会执行以下操作:

        var targ=phone_number_to_validate.replace(/[^\d]/g,''); // remove all non-digits
        if(targ && targ.length===10) {
          // targ is a valid phone number
        }
        

        这样做将验证以下所有表单:

        xxxxxxxxxx
        xxx-xxx-xxxx
        (xxx) xxx-xxxx
        etc.
        

        此外,要轻松检查有效的美国区号,您可以使用:

        if(targ.matches(/^[2-9]\d{2}/)) // targ is a valid area code
        

        同样,这是一个微不足道的检查。如需更严格的内容,请参阅List of Legal US Area Codes

        另见A comprehensive regex for phone number validation

        【讨论】:

        • +1 我打算提出类似的建议,只是您需要进行一些检查,因为我认为 targ.length 如果未初始化将是一个错误。
        猜你喜欢
        • 1970-01-01
        • 2014-11-30
        • 2013-01-01
        • 2011-05-19
        • 2013-08-24
        • 1970-01-01
        相关资源
        最近更新 更多