学习 JavaScript 中的正则表达式。我需要检查输入的电子邮件。
有这个:
reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
但我需要检查这封电子邮件是否以 @google.com
或 @me.com
结尾。例如 /@google.com$|@me.com$/
。差点让我心碎。请帮助我)
最佳答案
从编程的 Angular 来看,您应该首先检查您的电子邮件字符串 terminates使用 @google.com
或 @me.com
,然后运行您的正则表达式。
这将节省您的时间:正则表达式将是您所知道的所有通用邮件格式正则表达式,并且您可以随时添加更多域过滤器(将终止域放入数组或配置中...)。
它的 CPU 密集程度也低得多。如果您需要连续执行这些检查并期望过滤掉大量电子邮件,那么您会注意到一个明显的差异:虚拟字符串比较比正则表达式快得多。
<小时/>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);
}
}
关于javascript - 检查输入的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45404144/