Javascript jQuery电话正则表达式验证
我在一个页面上有jQuery验证插件。当有人在表单字段中键入电话号码时,我希望验证器只识别特定格式(ru): 我在.js文件中有以下内容:Javascript jQuery电话正则表达式验证,javascript,jquery,regex,validation,format,Javascript,Jquery,Regex,Validation,Format,我在一个页面上有jQuery验证插件。当有人在表单字段中键入电话号码时,我希望验证器只识别特定格式(ru): 我在.js文件中有以下内容: $.validator.addMethod('customphone', function (value, element) { return this.optional(element) || /^\+d{1}(\d{3})\d{7}$/.test(value); }, "Please enter a valid phone number");
$.validator.addMethod('customphone', function (value, element) {
return this.optional(element) || /^\+d{1}(\d{3})\d{7}$/.test(value);
}, "Please enter a valid phone number");
$(document).ready(function() {
$('form').validate({
rules: {
phone: 'customphone'
} ...
这对我不起作用,有人知道为什么吗?还是有更好的方法来做到这一点?:)
这对我不起作用,有人知道为什么吗?还是有更好的方法
如何做到这一点?:)
您的代码有几个问题
d
将只匹配d
,以匹配您需要的数字\d
(####)
和-
/^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g
它将与你的梦想相匹配
/^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)-33-33-33"); //true
/^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)-333-333-333"); //true
/^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)333333333"); //true
/^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4333333333"); //true
您需要以下正则表达式:
/^\+(?:\d(?:\(\d{3}\)|-\d{3})-\d{3}-(?:\d{2}-\d{2}|\d{4})|\d{11})$/
见
您拥有的正则表达式^\+d{1}(\d{3})\d{7}$
具有d
,而不是\d
(因此无法匹配数字)和未替换的括号(因此模式与文字括号不匹配)
细分:
-字符串的开头^
-文字符号\+
+
-两个备选方案:(?:\d(?:(\d{3}\)-\d{3}-(?:\d{2}-\d{2}\d{4})\d{11})
:\d(?:\(\d{3}\)-\d{3}-\d{3}-(?:\d{2}-\d{2}\d{4})
-一个数字\d
-要么像子字符串一样(?:\(\d{3}\)-\d{3})
,要么像子字符串一样(123)
-123
-一个连字符,后跟3位数字-\d{3}
-连字符-
-两位数字后跟连字符和两位或四位数字(?:\d{2}-\d{2}\d{4})
-或|
-11位数字\d{11}
-字符串结尾$
- 我不确定您的javaScript,但这里是您必须检查的不同正则表达式。。。。我希望这有帮助
+#(###)-###-##-##
^\+\d{1}\(\d{3}\)\-\d{3}\-\d{2}\-\d{2}$
+#-###-###-####
^\+\d{1}\-\d{3}\-\d{3}\-\d{4}$
+#-###-##-##
^\+\d{1}\-\d{3}\-\d{2}\-\d{2}$
+###########
^\+\d{11}$
所以我会设置一个phone is valid标志并测试每个regex值,以确定其中一个是否为真。将此标志设置为真,它将验证您的电话号码
var phoneValid = false;
if(test1 == true || test2 == true || test3 == true || test4 == true) {
phoneValid = true;
} else {
phoneValid = false;
}
d
匹配d
字母表。您希望\d
匹配数字<代码>)需要转义以匹配右大括号。此外,它将只匹配11个字符串digits@gurvinder372我错过了没错,在我看来,它最适合你。它不会,因为你没有逃过字符+888888888(11个符号)-这是行不通的<代码>/^+\d(\(\d{3}){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test(“+4333333333”)代码>-只有10个符号,我需要11个。求求你,救命!
var phoneValid = false;
if(test1 == true || test2 == true || test3 == true || test4 == true) {
phoneValid = true;
} else {
phoneValid = false;
}