覆盖jquery验证插件电子邮件地址验证

nee*_*meg 16 regex jquery email-validation jquery-validate

我发现jQuery验证插件正则表达式不足以满足我的要求.它接受任何电子邮件地址xxx@hotmail.x作为有效的电子邮件地址,而我希望能够提供此正则表达式/^([a-zA-Z0-9_.-+])+\@(([a-zA -Z0-9 - ])+.)+([a-zA-Z0-9] {2,4})+ $ /以便它将验证完整的.com部分地址.我更关心能够提供我自己的正则表达式而不是获得一个傻瓜证明正则表达式(因为没有用于电子邮件验证的傻瓜证据正则表达式)

仅供参考:我也在进行服务器端验证,但此时我并不担心哪个电子邮件地址是正确的.

有没有办法在jQuery validate插件的"规则"部分内执行此操作?

这是我现在的规则部分:

rules: {
                        email: {
                            required:  {
                                    depends:function(){
                                        $(this).val($.trim($(this).val()));
                                        return true;
                                    }   
                                },
                            email: true
                        },
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 23

我不会这样做,但为了答案,你需要添加自己的自定义验证.

//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"
);
Run Code Online (Sandbox Code Playgroud)

然后根据你的规则添加:

rules: {
                    email: {
                        required:  {
                                depends:function(){
                                    $(this).val($.trim($(this).val()));
                                    return true;
                                }   
                            },
                        customemail: true
                    },
Run Code Online (Sandbox Code Playgroud)

  • 你能详细说明你为什么不这样做吗? (3认同)
  • @Tom:电子邮件验证正则表达式错误.它应该是**`return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.试验(值);`** (2认同)

Den*_*ret 6

你的正则表达式太严格了,jQuery是对的.

"this is a valid adress !"@yes.it.is
Run Code Online (Sandbox Code Playgroud)

我建议你阅读:停止使用复杂的正则表达式验证电子邮件地址

  • 在现实生活中,每个人的电子邮件地址都有.tld,只有垃圾邮件发送者才有边缘案例字符. (2认同)