【问题标题】:Phone Number Validation with Regex [closed]使用正则表达式验证电话号码 [关闭]
【发布时间】:2013-11-07 15:32:21
【问题描述】:

我有一个网络表单并希望接受以下格式的电话号码:

1234567890 123-456-7890 123.456.7890 123-4567890

第一个数字不能是 0 或 1。

如何使用正则表达式/javascript 做到这一点?我在网上找到了一些正则表达式公式,但没有一个是针对我的需求的

【问题讨论】:

标签: javascript regex


【解决方案1】:

null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);

(经过编辑以使用布尔结果给出更好的答案)

【讨论】:

  • 不在括号内,不是。 [.] 表示.,不是任何字符。
  • 你是对的 - 很抱歉! :-)
  • 成功了,谢谢!!
【解决方案2】:

考虑以下正则表达式...

[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}

注意:您的示例以不满足上述正则表达式的 1 开头。

【讨论】:

    【解决方案3】:

    用户提供的格式应该是无关紧要的。将电话号码存储为数字(即仅数字)更有意义,并在显示它们时添加统一格式。否则你最终会在你的数据库中弄得一团糟,你将很难搜索数字(如果你想找到给定的数字是否已经在你的数据库中,那么你怎么知道它输入的格式? ),并且在显示数字时会出现不一致的数字格式。

    因此,无论用户在表单中输入了什么,您都可以将任何示例编号存储为 1234567890。这意味着您可以通过剥离任何非数字来验证您的输入,然后检查长度和其他条件,如下所示:

    function validPhone( num ){
       var digits = num.replace(/\D/g,'');
       // assuming 10 digits is a rule you want to enforce and the first digit shouldn't be 0 or 1
       return (parseInt(digits[0],10) > 1 && digits.length == 10); 
    }
    

    您还可以使用return parseInt(digits, 10) >= 2000000000 来验证该号码不是以 0 或 1 开头,并且有至少 10 位数字。

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2019-08-28
      • 1970-01-01
      相关资源
      最近更新 更多