重写jqueryvalidation插件的电子邮件地址validation

我发现jQueryvalidation插件正则expression式不足以满足我的要求。 它接受任何电子邮件地址xxx@hotmail.x作为有效的电子邮件地址,而我想能够提供这个正则expression式/^([a-zA-Z0-9_.-+])+\@(([a-zA -Z0-9 – ])+。)+([a-zA-Z0-9] {2,4})+ $ /,这样就可以validation地址的完整.com部分。 我更关心能够提供自己的正则expression式而不是得到一个傻瓜certificate正则expression式(因为没有电子邮件validation的傻瓜certificate正则expression式)

只是供参考:我也做服务器端validation,但在这一点上,我不担心哪个电子邮件地址正则expression式是正确的。

有没有办法做到这一点在jQueryvalidation插件的“规则”部分?

这是我现在的规则部分:

rules: { email: { required: { depends:function(){ $(this).val($.trim($(this).val())); return true; } }, email: true }, 

我不会这样做,但为了答复的缘故,您需要添加自己的自定义validation。

 //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 }, 

你的正则expression式太简单了,jQuery是对的。

 "this is a valid adress !"@yes.it.is 

我build议你阅读: 停止使用复杂的正则expression式validation电子邮件地址

 // 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.-]+\.[AZ]{2,4}\b$/i); });