18

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

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

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

这是我现在的规则部分:

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

4 回答 4

25

我不会这样做,但为了得到答案,您需要添加自己的自定义验证。

//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
                    },
于 2012-09-20T14:12:31.673 回答
6

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

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

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

于 2012-09-20T14:06:29.990 回答
1

尝试这个!

   jQuery.validator.addMethod("customEmail", function(value, element) {
             return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i.test(value);
            }, "Please enter valid email address!");

        $(form).validate({
             rules: {
                 email:{
                     required:true,
                     customEmail:true
                 }
             }
        });
于 2018-11-22T11:34:54.850 回答
0
// 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.-]+\.[A-Z]{2,4}\b$/i);
 });
于 2017-02-15T17:47:30.203 回答