我发现jQuery验证插件正则表达式不足以满足我的要求。它接受任何电子邮件地址 xxx@hotmail.x 作为有效的电子邮件地址,而我希望能够提供此正则表达式/^([a-zA-Z0-9_.-+])+\@(([a-zA-Z0-9-])+。+([a-zA-Z0-9]{2,4})+$/以便验证地址的完整.com部分。我更关心能够提供我自己的正则表达式,而不是获得万无一失的正则表达式(因为没有用于电子邮件验证的万无一失的正则表达式)
仅供参考:我也在进行服务器端验证,但在这一点上,我不担心哪个电子邮件地址正则表达式是正确的。
有没有办法在jQuery验证插件的"规则"部分中做到这一点?
这是我现在的规则部分:
rules: {
email: {
required: {
depends:function(){
$(this).val($.trim($(this).val()));
return true;
}
},
email: true
},
我不会这样做,但为了答案,您需要添加自己的自定义验证。
//custom validation rule
$.validator.addMethod("customemail",
function(value, element) {
return /^w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*$/.test(value);
},
"Sorry, I've enabled very strict email validation"
);
然后在规则中添加:
rules: {
email: {
required: {
depends:function(){
$(this).val($.trim($(this).val()));
return true;
}
},
customemail: true
},
你的正则表达式太严格了,jQuery 是对的。
"this is a valid adress !"@yes.it.is
我建议您阅读以下内容: 停止使用复杂的正则表达式验证电子邮件地址
试试这个!
jQuery.validator.addMethod("customEmail", function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/i.test(value);
}, "Please enter valid email address!");
$(form).validate({
rules: {
email:{
required:true,
customEmail:true
}
}
});
// Add Custom Email Validation
jQuery.validator.addMethod('customemail', function (emailaddr, element) {
emailaddr = emailaddr.replace(/s+/g, '');
return this.optional(element) ||
emailaddr.match(/^b[A-Z0-9._%-]+@@[A-Z0-9.-]+.[A-Z]{2,4}b$/i);
});