9

谁能告诉我 RegEx 将如何验证国际电话号码,包括号码之间的空格并允许这些字符:- ( ).

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

例子:

  1. +44 (0) 207 111 1111

  2. 442071111111

据我所知,我已经通读并测试了一些类似问题的发布答案,但到目前为止,它们都没有按照我希望的方式为我工作。

请有人可以帮助我清楚地解释如何编写上述内容以进行验证?

非常感谢任何可以提供帮助的人。

4

7 回答 7

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");
  }
});
于 2013-02-01T05:04:50.937 回答
13

请参阅电话号码验证的综合正则表达式

快速备忘单

  • 开始表达: /^
  • 如果您需要空间,请使用: [\s]\s
  • 如果您需要括号,请使用: [(][)]. 使用\(and\)是丑陋的,并且会使事情变得混乱。
  • 如果您希望任何内容是可选的,请在?其后添加
  • 如果您想要连字符,只需键入-or [-]。但是,如果您没有将它放在一系列其他字符中的第一个或最后一个,则可能需要对其进行转义: \-
  • 如果您想在插槽中接受不同的选择,请在选项周围加上括号:[-.\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。
  • $/: 结束表达式
于 2014-08-14T02:36:25.587 回答
10

这是一个很长的正则表达式,但它支持两种格式(例如 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 分机 1234
  • 1-234 567.89/01 分机 1234
  • 1(234)5678901x1234
  • (123)8575973
  • (0055)(123)8575973

在 $n 上,它节省了:

  1. 国家指标
  2. 电话号码
  3. 扩展

此处给出了相同的答案:电话号码验证的综合正则表达式(直接链接到我的答案)

于 2014-01-08T09:51:56.713 回答
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..

于 2013-03-06T18:47:07.930 回答
1

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

于 2014-01-14T15:21:12.467 回答
0

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

于 2021-03-24T14:22:02.157 回答
0
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;
}

试试看

于 2016-04-05T07:03:58.660 回答