重写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); });