在Javascript中自定义电子邮件验证

时间:2014-03-05 11:46:28

标签: javascript regex validation email-validation

我正在使用正则表达式进行Javascript电子邮件验证。

我正在使用以下功能

function validateEmail(email) { 
     var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

适用于各种电子邮件验证方案。比方说吧

validateEmail('m@s'); // return false

但是,如果我尝试验证像

这样的东西
validateEmail('m@com.com'); // return true

根据正则表达式,这是真的。

我需要的是,它还会在“。”之前和之后验证文本“com”,这样两个文本都不应该相同。

任何帮助将不胜感激......:)

1 个答案:

答案 0 :(得分:1)

我在上面的代码中做了一些修饰,它起作用.. :)

以下是更改的功能,其中在“@”之后但在“。”之前和之后的文本中重新检查有效的电子邮件。

function validateEmail(email) { 
   var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;  
     if(re.test(email)){   
       var afteratRate = email.substr(email.indexOf("@") + 1); 
       var spmail = afteratRate.split(".");
       if(spmail[0] === spmail[1]){
           return false;
        }
    }
    return re.test(email);
}

然后测试以下场景

validateEmail('m@.com'); // gives false
validateEmail('m@s.com'); // gives true
validateEmail('test@gmail.com'); // gives true
validateEmail('test@com.com'); // gives false