我正在使用正则表达式进行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”,这样两个文本都不应该相同。
任何帮助将不胜感激......:)
答案 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