使用正则表达式验证和过滤电子邮件地址?

4

如何使用正则表达式和Javascript电子邮件字段验证来禁止免费的电子邮件服务邮件(例如Gmail,Yahoo,Hotmail)?

^.*@(?!(aol\.com$|yahoo\.com$|hotmail\.com$))$

我看到了这里的通用“在Javascript中验证电子邮件地址”的解决方案Validate email address in JavaScript?,但是我不知道如何使其禁止Gmail、Yahoo和Hotmail。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b

1
你必须使用正则表达式吗?相反,你可以只是在“@”上分割,然后与TLD黑名单进行比较吗? - sdleihssirhc
我正在使用一个第三方表单框架,它允许使用正则表达式进行自定义验证。因此,我必须使用正则表达式。 - Michael G.
1个回答

8
成千上万种可行的方法可以实现目标——并不是说你的方法不可行...
function isGoodEmail(email) {
    if(isValidEmail(email)) {
        if(/(aol|gmail|yahoo|hotmail)\.com$/.test(email)) {
           alert(' valid email, but not for this site.  No free service emails!');
           return false;
        }
        return true;
    }
    return false;
}

function isValidEmail(email) {
  // implement using any of the email regexp's available 
}

我必须使用正则表达式。 - Michael G.
抱歉让你感到困惑。我会确保编辑问题。 - Michael G.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接