Fli*_*Off 18 javascript jquery jquery-validate
我想验证电话号码,如(123)456-7890或1234567890如何在以下代码中写入'匹配'条件?
form.validate({
rules: {
phoneNumber: {matches:"[0-9]+",minlength:10, maxlength:10}
Run Code Online (Sandbox Code Playgroud)
Bin*_*ain 23
你的正则表达应该是这样的
[0-9\-\(\)\s]+.
它匹配数字,短划线,括号和空格.
如果你需要更严格的东西,只需匹配你的例子,试试这个:
([0-9]{10})|(\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})
Spa*_*rky 20
你的代码:
rules: {
phoneNumber: {
matches: "[0-9]+", // <-- no such method called "matches"!
minlength:10,
maxlength:10
}
}
Run Code Online (Sandbox Code Playgroud)
有没有这样的回调函数,选项,方法,或叫规则matches中的任何地方的jQuery验证插件. (编辑:OP未提及这matches是他的自定义方法.)
然而,内部的additional-methods.js文件,还有你可以使用几个电话号码验证方法.被叫的人phoneUS应该满足你的模式.由于规则已经验证了长度,minlength因此maxlength是多余的.它也更全面,区域代码和前缀不能以a开头1.
rules: {
phoneNumber: {
phoneUS: true
}
}
Run Code Online (Sandbox Code Playgroud)
演示:http: //jsfiddle.net/eWhkv/
无论出于何种原因,如果您只需要在另一种方法中使用正则表达式,您可以从这里获取它...
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");
Run Code Online (Sandbox Code Playgroud)
小智 15
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
Run Code Online (Sandbox Code Playgroud)
支持:
Dis*_* TD 11
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;
}
}
Run Code Online (Sandbox Code Playgroud)
演示 http://jsfiddle.net/dishantd/JLJMW/496/
如果首先对数据进行规范化,则可以避免验证电话号码所需的所有非常复杂的正则表达式。根据我的经验,复杂的正则表达式模式可能有两个不需要的副作用:(1) 它们可能有意外的行为,以后调试起来会很痛苦,(2) 它们可能比简单的正则表达式模式慢,当您使用时,这可能会变得明显正在循环中执行正则表达式。
通过使正则表达式尽可能简单,您可以降低这些风险,并且您的代码将更容易被其他人遵循,部分原因是它更具可预测性。以您的电话号码为例,首先我们可以通过像这样去除所有非数字来标准化该值:
value = $.trim(value).replace(/\D/g, '');
现在,美国电话号码(或任何其他语言环境)的正则表达式模式可以简单得多:
/^1?\d{10}$/
正则表达式不仅更简单,而且更容易理解正在发生的事情:一个值可选地以第一(美国国家代码)开头,后跟十位数字。如果您想格式化已验证的值以使其看起来漂亮,那么您可以使用这个稍长的正则表达式模式:
/^1?(\d{3})(\d{3})(\d{4})$/
这意味着一个可选的前导数字 1 后跟三位数字,另外三位数字,并以四位数字结尾。记住每组数字后,您可以以任何方式输出。这是一个使用 jQuery 验证的代码笔来说明这两个语言环境(新加坡和美国):
http://codepen.io/thdoan/pen/MaMqvZ
| 归档时间: |
|
| 查看次数: |
193251 次 |
| 最近记录: |