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?

下一篇: Add Dash to Java Regex