jQuery验证插件允许电子邮件中的特殊字符?
我使用的jQuery验证插件和一切工作正常免费的电子邮件,因为有ß字符ist允许(这当然应该是无效的)?
这不是只发生在我的网站,我甚至可以绕过办公演示网站的验证:http://jquery.bassistance.de/validate/demo/
我正在使用的规则:
$("#form").validate({
rules: {
txtSubscribe: {
required: true,
email: true
}
}
});
有没有办法将特定字符添加到插件电子邮件验证规则,或者是否有人知道如何实施适用于所有电子邮件规则的解决方案? (因为我经常在一个非常大的网站中使用它。)
只要交换服务器支持该字符,该字符就是有效的。
你可以添加自己的正则表达式来验证电子邮件,只要你想要它:
$(function ()
{
$.validator.addMethod("loginRegex", function(value, element) {
return this.optional(element) || /^[a-z0-9-]+$/i.test(value);
}, "Username must contain only letters, numbers, or dashes.");
$("#signupForm").validate({
rules: {
"login": {
required: true,
loginRegex: true,
}
},
messages: {
"login": {
required: "You must enter a login name",
loginRegex: "Login format not valid"
}
}
});
});
这个例子来自这里:使用jquery验证插件,我如何在文本框中添加正则表达式验证?
我在github https://github.com/jzaefferer/jquery-validation/issues/1012上打开了一个问题报告,看起来这将在下一个版本中使用HTML5规范的电子邮件解决:http:// www .w3.org / TR / HTML5 / forms.html#有效的电子邮件地址
正则表达式:
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
这里是一个jsfiddle,显示这将返回正确的结果在我的情况:
http://jsfiddle.net/rv8bq/
也可以覆盖默认验证:
$.extend($.validator.methods, {
email: function(value, element) {
var re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return this.optional(element) || re.test(value);
}
});
链接地址: http://www.djcxy.com/p/92879.html
上一篇: jQuery Validation Plugin allows special character in email?