我想验证电话号码,例如 (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}\-[0-9]{4})
您的代码:
rules: {
phoneNumber: {
matches: "[0-9]+", // <-- no such method called "matches"!
minlength:10,
maxlength:10
}
}
在
jQuery Validate 插件中的任何地方都没有这样的回调函数、选项、方法或规则
matches
。(编辑:OP 没有提及 matches
是他的自定义方法。)
文件中,您可以使用多种电话号码验证方法。名为
phoneUS
的应该可以满足您的模式。由于规则已经验证了长度,因此
minlength
和
maxlength
是不必要的。它也更全面,因为区号和前缀不能以
1
开头。
rules: {
phoneNumber: {
phoneUS: true
}
}
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");
function validatePhone(txtPhone) {
var a = document.getElementById(txtPhone).value;
var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/;
if (filter.test(a)) {
return true;
}
else {
return false;
}
}
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
支持:
通过使正则表达式尽可能简单,您可以降低这些风险,并且您的代码将更容易被其他人遵循,部分原因是它更可预测。要使用您的电话号码示例,首先我们可以通过删除所有非数字来标准化该值,如下所示:
value = $.trim(value).replace(/\D/g, '');
/^1?\d{10}$/
/^1?(\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
}
}
如果您想要有效的10位数字电话号码“美国号码”,此功能将起作用
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})$/
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
尝试过以下电话格式: