有人能告诉我RegEx会用来验证国际电话号码,包括号码之间的空格,还允许这些字符:- ( )
。
字符串中的数字量不是太重要,我希望用户能够键入类似示例1或2的内容,如果他们愿意:
示例:
+44 (0) 207 111 1111
442071111111
我已经阅读并根据我的理解测试了一些类似问题的已发布答案,但到目前为止,他们都没有按照我希望的方式为我工作。
请有人帮我解释一下如何编写以上内容进行验证吗?
非常感谢能够提供帮助的任何人。
答案 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
这允许扩展和多种格式和分隔符选择。
匹配
在$ n上,它会保存:
这里给出了同样的答案: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')。这有助于您准确验证任何国际号码。