Javascript Regex - 用于验证电话号码的用途?

时间:2013-02-01 04:55:43

标签: javascript regex validation whitespace phone-number

有人能告诉我RegEx会用来验证国际电话号码,包括号码之间的空格,还允许这些字符:- ( )

字符串中的数字量不是太重要,我希望用户能够键入类似示例1或2的内容,如果他们愿意:

示例:

  1. +44 (0) 207 111 1111

  2. 442071111111

  3. 我已经阅读并根据我的理解测试了一些类似问题的已发布答案,但到目前为止,他们都没有按照我希望的方式为我工作。

    请有人帮我解释一下如何编写以上内容进行验证吗?

    非常感谢能够提供帮助的任何人。

7 个答案:

答案 0 :(得分:14)

试试此代码

HTML代码

<input type="text" id="phone"/>

JS代码

$("#phone").blur(function() {
  var regexp = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/
  var no = $("#phone").val();
  if (!regexp.test(no) && no.length < 0) {
    alert("Wrong phone no");
  }
});

答案 1 :(得分:13)

请参阅A comprehensive regex for phone number validation

快速备忘单

  • 启动表达式:/^
  • 如果您想要一个空格,请使用:[\s]\s
  • 如果您想要括号,请使用:[(][)]。使用\(\)很难看,可能让事情变得混乱。
  • 如果您想要任何内容​​可选,请在其后面添加?
  • 如果您想要连字符,只需输入-[-]即可。但是,如果你不把它放在一系列其他角色的第一个或最后一个,你可能需要逃避它:\-
  • 如果您想在插槽中接受不同的选择,请在选项旁边添加括号:[-.\s]将需要连字符,句点或空格。最后一个括号后面的问号将使该插槽的所有选项都成为可选项。
  • \d{3}:需要一个3位数字:000-999。简写 [0-9][0-9][0-9]
  • [2-9]:该插槽需要数字2-9。
  • (\+|1\s)?:接受“加号”或1和空格(竖线字符,|,是“或”),并将其设为可选。必须转义“加号”。
  • 如果您希望特定数字与广告位相匹配,请输入:[246]需要2,4或6。[77|78]需要77或78.
  • $/:结束表达

答案 2 :(得分:9)

这是一个很长的正则表达式,但它支持两种格式(例如2是一个有效的国际号码,必须以+或00开头):

/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

这允许扩展和多种格式和分隔符选择。

匹配

  • (+ 351)282 43 50 50
  • 90191919908
  • 555-8909
  • 001 6867684
  • 001 6867684x1
  • 1(234)567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901 ext1234
  • 1-234 567.89 / 01 ext.1234
  • 1(234)5678901x1234
  • (123)8575973
  • (0055)(123)8575973

在$ n上,它会保存:

  1. 国家/地区指标
  2. 电话号码
  3. Extention
  4. 这里给出了同样的答案:A comprehensive regex for phone number validation(直接链接到我的答案)

答案 3 :(得分:1)

/*
@isValidUSPhoneFormat function will check valid US Format
    Allowed US Format
(123) 456-7890
123-456-7890
123.456.7890
1234567890
(734) 555.1212
*/   

    function isValidUSPhoneFormat(elementValue){  
            var phoneNumberPattern = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s.]{0,1}[0-9]{3}[-\s.]{0,1}[0-9]{4}$/;  
            if(phoneNumberPattern.test(elementValue) == false)
            {
                 var phoneNumberPattern = /^(\()?\d{3}(\))?(.|\s)?\d{3}(.|\s)\d{4}$/; 
                 return phoneNumberPattern.test(elementValue);   
            }
            return phoneNumberPattern.test(elementValue);  
        }

这可以帮助您理解JavaScript RegEx ..

答案 4 :(得分:1)

甚至不尝试。试图防止您认为无效输入可能导致无法输入完全有效电话号码的愤怒用户。如果用户确实想要输入无效的电话号码,他/她无论如何都可以这样做。

答案 5 :(得分:1)

function checkPhoneNumber(val) {
    var num = document.getElementById(val).value;
    var mob=/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g;
    if (mob.test(num) == false) {
        alert("Please Enter Valid Phone Number.");
        document.getElementById(val).value = "";
        return false;
    }
     if (num.length > 15) {
        alert("Only 15 characters allowed for Phone Number field.");
        document.getElementById(val).value = "";
        return false;
    }

    return true;
}
  

尝试一下

答案 6 :(得分:0)

尝试使用 libphonenumber-js 包的 isValidPhoneNumber(phoneNumber, countryCode) 方法。首先是带有 "+" 开头的电话号码。第二个参数是国家代码(例如:'US'、'IN')。这有助于您准确验证任何国际号码。