【问题标题】:Regex to validate phone number fails验证电话号码的正则表达式失败
【发布时间】:2013-02-22 11:49:28
【问题描述】:

我正在尝试使用regex 验证具有以下格式的电话号码。但它在某些条件下会失败。

电话号码:

2323232
0112323232
011-2323232
+91-9898989898
98989898998

我为上述数字写了这个regex

^[+]?(\d{2,4}-)?(\d{7,11})

测试了here

我在以下代码段中使用过:

var phonePattern = /^[+]?(\d{2,4}-)?(\d{7,11})/;
if(!(phonePattern.test(formData.phone))){
    $('#errorList').append('<li>Invalid Phone Number</li>');
    error = 1;
}

正则表达式适用于我需要的电话号码,但它也适用于 formData.phone = '011-2323232asdasd'。我是regex 的新手,它在javascript 中的用法。我怎样才能让它工作?请指教。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你需要在两端放置锚点(比如^&lt;a-regex-goes-here&gt;$,否则会在比赛结束后放垃圾。

    【讨论】:

      【解决方案2】:

      在你的正则表达式末尾添加$^[+]?(\d{2,4}-)?(\d{7,11})$

      它的意思是“文本/行的结尾”,所以你的正则表达式需要只有数字直到字符串的结尾。

      【讨论】:

        【解决方案3】:

        您需要在代码中添加“以 ($) 结尾”运算符。

        /^[+]?(\d{2,4}-)?(\d{7,11})$/
        

        你可能想看看这个 http://www.regular-expressions.info/javascript.html

        【讨论】:

          【解决方案4】:

          试试这个正则表达式/^((\+91)?-?[0\+\(]*\d{2,3}[-\s\)]*\.?\d{3,4}[-\s]*\.?[0-9]{4})$/ 这将适用于所有类型的有效电话号码。

          以下条件返回真:

          1. Just 10 digits
          2. +00 0000 0000
          3. +1 000 000 000
          4. (3 digits)<space>(3 digits)<space>4 digits
          5. (3 digits) - 3 digits - 4 digits
          6. +91-9898989898
          

          还有更多……

          【讨论】:

            【解决方案5】:

            我想你最后错过了$。 使用:

            ^[+]?(\d{2,4}-)?(\d{7,11})$
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-18
              • 2014-06-25
              • 2012-02-13
              • 1970-01-01
              相关资源
              最近更新 更多