Javascript jquery验证电话号码
我想验证电话号码,如(123)456-7890或1234567890 在下面的代码中应该如何编写“匹配”条件Javascript jquery验证电话号码,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我想验证电话号码,如(123)456-7890或1234567890 在下面的代码中应该如何编写“匹配”条件 form.validate({ rules: { phoneNumber: {matches:"[0-9]+",minlength:10, maxlength:10} 你的正则表达式应该是 [0-9\-\(\)\s]+ 它匹配数字、破折号、括号和空格 如果您需要更严格的要求,请尝试以下方法: ([0-9]{10})|(\([0-9]{3})\s+[0-9]{3
form.validate({
rules: {
phoneNumber: {matches:"[0-9]+",minlength:10, maxlength:10}
你的正则表达式应该是
[0-9\-\(\)\s]+
它匹配数字、破折号、括号和空格
如果您需要更严格的要求,请尝试以下方法:
([0-9]{10})|(\([0-9]{3})\s+[0-9]{3}-[0-9]{4})
支持:
- (123)4567899
- (123).456.7899
- (123)-456-7899
- 123-456-7899
- 1234567899
- 1234567899
rules: {
phoneNumber: {
matches: "[0-9]+", // <-- no such method called "matches"!
minlength:10,
maxlength:10
}
}
演示:
如果出于任何原因,您只需要在另一个方法中使用正则表达式,您可以从这里获取它
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");
Demo如果先规范化数据,那么就可以避免验证电话号码所需的所有非常复杂的正则表达式。根据我的经验,复杂的正则表达式模式可能有两个不必要的副作用:(1)它们可能有意外的行为,这将是以后调试的一个难题;(2)它们可能比简单的正则表达式模式慢,这在循环中执行正则表达式时可能会很明显 通过使正则表达式尽可能简单,您可以降低这些风险,并且您的代码将更容易被其他人理解,部分原因是它将更可预测。要使用您的电话号码示例,首先我们可以通过剥离所有非数字来规范化该值,如下所示:
value=$.trim(value).replace(/\D/g')代码>
现在,美国电话号码(或任何其他地区)的正则表达式模式可以简单得多:
/^1?\d{10}$/
正则表达式不仅简单得多,而且更容易理解所发生的事情:一个值可以选择以数字1(美国国家代码)开头,后跟十位数字。如果您想格式化已验证的值以使其看起来美观,则可以使用稍长的正则表达式模式:
/^1?(\d{3})(\d{3})(\d{4})$/
这意味着可选的前导数字1后跟三位数字,另外三位数字,最后四位数字。随着每组数字的记忆,你可以输出它任何你想要的方式。下面是一个使用jQuery验证的代码笔,用于说明两个地区(新加坡和美国)的情况:
我知道这是一篇老文章,但我想我会分享我的解决方案来帮助他人
如果您想输入有效的10位电话号码“US number”,此功能将起作用
这里介绍如何使用这种方法
var num = getValidNumber('(123) 456-7890');
if(num !== false){
alert('The valid number is: ' + num);
} else {
alert('The number you passed is not a valid US phone number');
}
这是我的工作:-
/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/
我尝试了下面的解决方案,效果很好
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
尝试以下电话格式:
- +(123)4567899
- (123)4567899
- (123).456.7899
- (123)-456-7899
- 123-456-7899
- 1234567899
- 1234567899
什么是匹配的应该是什么?这个插件中没有这样的方法。代码是定制的,你应该在OP中提到。为什么不使用其中的一个呢?你确定第一个表达式是正确的吗?我试过了,但没有成功。@KarueBensonKaruevar phone_pattern=/([0-9]{10}){124;(\([0-9]{3})\s+[0-9]{3}-[0-9]{4})/;电话模式测试(输入值)代码>这是完美的,谢谢。但我必须遵守代码标准。他们用我写的方式做事。我是jquery的新手:'(@Mr.Flint,就像我在回答的最后一部分中显示的那样,在这个方法中有一个非常好的电话号码regex,你可以使用它来代替……这不是你要求的吗?为已经存在的东西编写代码真的没有意义……特别是如果你是一个新手。@Mr.Flint,如果你已经显示了匹配的方法
的话在您的OP中,我们可以为您创建一个工作演示。@Sparky非常感谢您为我节省时间。嗯…这个怎么样:/^(?(\d{3}))?[-]?(\d{3})[-]?(\d{4})$/
function getValidNumber(value)
{
value = $.trim(value).replace(/\D/g, '');
if (value.substring(0, 1) == '1') {
value = value.substring(1);
}
if (value.length == 10) {
return value;
}
return false;
}
var num = getValidNumber('(123) 456-7890');
if(num !== false){
alert('The valid number is: ' + num);
} else {
alert('The number you passed is not a valid US phone number');
}
/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/
jQuery.validator.methods.matches = function( value, element, params ) {
var re = new RegExp(params);
// window.console.log(re);
// window.console.log(value);
// window.console.log(re.test( value ));
return this.optional( element ) || re.test( value );
}
rules: {
input_telf: {
required : true,
matches : "^(\\d|\\s)+$",
minlength : 10,
maxlength : 20
}
}
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/