正则表达式电子邮件验证错误 - 使用JavaScript

时间:2012-04-29 10:50:49

标签: javascript regex email verification email-validation

//if HTML5 input email input is not supported
if(type == 'email'){    
    if(!Modernizr.inputtypes.email){ 
         var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-])+\.+([a-zA-Z0-9]{2,4})+$/;              
         if( !emailRegEx.test(value) ){ 
            this.focus();
            formok = false;
            errors.push(errorMessages.email + nameUC);
            return false;
        }
    }
}

这是我的javascript正则表达式,用于检查电子邮件格式是否正确。但是,当我自己尝试它时,它没有显示任何错误.. @ ..它不会检查.com或最后的任何东西。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要使用实际适合电子邮件地址的正则表达式。由于有大量有效地址不能接受,因此您当前的地址已完全破坏。

请参阅http://www.regular-expressions.info/email.html以获取更详细的描述和论据,为什么正则表达式毕竟不是一个好主意。

无论如何,这里有一个可能适合您的需求:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

这是regular-expressions.info关于这个正则表达式的说法:

  

如果我们使用双引号和方括号省略语法,我们会得到更实际的RFC 2822实现。它仍将匹配当前实际使用的99.99%的电子邮件地址。