我有客户端电子邮件验证脚本 Javascript+RegEx,它工作正常,但我想在验证时排除某些域,即所有 Apple 域,因为它们不起作用(发送到这些地址的电子邮件将被删除,恕不另行通知): @apple.com、@me.com、@icloud.com、@mac.com。
我在这里找到了合适的问题,但它们仍然与我寻求帮助的不一样。 请帮助实现这一点
是否可以通过正则表达式修改来完成,或者在主电子邮件验证完成后我必须使用循环和搜索子字符串(@apple.com、@me.com、@icloud.com、@mac.com)?
function verifyMe(){
var msg='';
var email=document.getElementById('email').value;
if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)) ||
document.getElementById('email').value=='')
{
msg+='- Invalid Email Address: '+email+'\n\n';
document.getElementById('Eemail').style.color='#ffffff';
}
else
document.getElementById('Eemail').style.color='#bbb'
if(msg!='')
return false;
else
{
search_code(); //it's ok go ahead
return true;
}
}
最佳答案
这两种方法都有效。
对于正则表达式,只需在正则表达式中的 @
之后插入以下部分(负向前瞻):
(?!(?:apple|me|icloud|mac)\.com$)
但总体上更好的正则表达式是:
^\w+[-\.\w]*@(?!(?:apple|me|icloud|mac)\.com$)\w+[-\.\w]*?\.\w{2,4}$
对于另一种方法,以下方法应该有效:
function isValidMailAddress(email) {
var match = /^\w+[-\.\w]*@(\w+[-\.\w]*?\.\w{2,4})$/.exec(email);
if (!match)
return false;
var forbiddenDomains = ["apple.com", "me.com", "icloud.com", "mac.com"];
if (forbiddenDomains.indexOf(match[1].toLowerCase()) >= 0)
return false;
return true;
}
您可以决定哪种方法最适合您。
关于javascript - 电子邮件验证Javascript+RegEx,但排除某些域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388648/