检查输入的电子邮件

时间:2017-07-30 20:01:16

标签: javascript regex

在javascript中学习regexp。我需要检查输入的电子邮件。

有这个:

reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/

但我需要检查此电子邮件是否以@google.com@me.com结束。像/@google.com$|@me.com$/一样。几乎打破了我的想法。请帮帮我)

2 个答案:

答案 0 :(得分:3)

从编程的角度来看,您应该首先检查您的电子邮件字符串terminates是否包含@google.com@me.com,然后再运行正则表达式。

这将节省您的时间:正则表达式将是您知道的所有通用邮件格式正则表达式,您可以在任何其他时间添加更多域过滤器(将终止域放在数组或配置中......)。

它的CPU密集程度也低得多。如果你需要连续执行这些检查并期望过滤掉大量的电子邮件,那么你会注意到一个明显的区别:虚拟字符串比较比正则表达式更快。<​​/ p>

var emails = ['jose@me.com', 'hacker@noway.com', 'hacker";DROP TABLES;@me.com' ];
var domains = ['gmail.com', 'me.com'];

function validateEmailFormat(email) {
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)
}

function validateEmailDomain(email) {
    for (i in domains) {
	if (email.endsWith('@'+domains[i])) {
	    return true;
	}
    }
    return false;
}

for (i in emails) {
    email = emails[i];
    if (validateEmailDomain(email) && validateEmailFormat(email)) {
	console.log('OK for '+email);
    } else {
	console.log('NOT OK for '+email);
    }
}

答案 1 :(得分:1)

使用正则表达式验证电子邮件地址是一件棘手的事情。我想如果你只想允许某些域,它会简化一些事情。类似的东西可以做到这一点:

\w+@(google|me)\.com$

\w+之前的@当然是简化的。将其展开为您需要的......

相关问题