【问题标题】:Validate us number with regular expression使用正则表达式验证我们的号码
【发布时间】:2015-07-08 10:13:15
【问题描述】:

我在 freecodecamp 上做一个练习来验证我们的电话号码。

用户可以选择任何方式填写表单字段,只要它是一个有效的美国号码。以下是美国号码的所有有效格式:

555-555-5555、(555)555-5555、(555) 555-5555、555 555 5555、5555555555、1 555 555 5555

我正在使用 RegEx 测试输入。我在 regex101 上键入这些表达式

(([1]\s)?(\()*(\d{3})(-|\)|\)\s|\s)*(\d{3})(-|\s)*\d{4})

像这样测试输入:

2 ** (757) 622-7382** 返回真

-1 (757) 622-7382 返回真

10 ** (757) 622-7382** 返回真

我如何测试前导 2、减号和 10。

【问题讨论】:

  • 我不确定我是否理解。如果要确保该字段仅包含电话号码而不包含其他任何内容,则应以 ^ (匹配字符串的开头)开始正则表达式,并以 $ (匹配字符串的结尾)结束它。然后所有三个示例都将返回 true,因为它们的有效电话号码前面有一些内容。
  • 谢谢@Anders 我明白了

标签: javascript regex validation


【解决方案1】:

可能有点晚了,但这里是解决这个问题的方法。

/^(1\s?)?(\(\d{3}\)|\d{3})[\s\-]?\d{3}[\s\-]?\d{4}$/;

您确实希望表达式开头的 ^ 与字符串的第一个字符匹配,并且您希望在末尾使用 $ 让表达式知道这是结束。

你可以在下面的githubgithub link看到上面的答案和另一种方法

【讨论】:

    【解决方案2】:

    我建议您查看 OWASP Validation Regex Repository,因为它们正在接受验证和持续更新

    对于美国电话(在我撰写本文时),建议的 RegEx 是 ^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$

    【讨论】:

      【解决方案3】:

      ((-)?\d{0,2} )? 注意space 后面的{0,2}

      (-)?       // may begin with a minus
      (\d{1,2})?   // may have 1 or 2 digits before the actual number
      ( )?       // may have a space after that
      

      DEMO

      【讨论】:

      • 我想确保电话号码以 1 XXX XXX XXXX 或仅 XXX XXX XXXX 开头。我通过将表达式更改为 ^(([1](\s)?)?(()*(\d{3})(-|)|)\s|\s)*(\d{ 3})(-|\s)*\d{4})$谢谢
      【解决方案4】:

      这是您的正则表达式的修改版本,现在将匹配新的电话格式:

      ^[-+]?(?:\d{1,2}\s)?\(*(?:\d{3})(?:-|\)|\)\s|\s)*\d{3}(?:-|\s)*\d{4}$
      

      demo

      注意我删除了捕获组(我怀疑您是否需要它们,它们会产生额外的开销)并在数字前添加可选的+-。 此外,由于limiting quantifier {1,2}\d{1,2} 匹配 1 或 2 位数字

      【讨论】:

        【解决方案5】:

        这也有效

        function telephoneCheck(str){
          const regEx = /^((1\s*)(([(]\d{3}[)])|(\d{3}))|([(]\d{3}[)])|(\d{3}))(\s*|\-)\d{3}(\-|\s*)\d{4}$/g
        
          if (regEx.test(str)) {
            return true;
          }
          else {
            return false;
          }
        }
        

        【讨论】:

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