在JavaScript中学习正则表达式。我需要检查输入的电子邮件。检查输入的电子邮件地址
这样:
reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
但我需要检查,如果该电子邮件上@google.com
或@me.com
结束。像/@google.com$|@me.com$/
。几乎打破了我的想法。请帮助我)
在JavaScript中学习正则表达式。我需要检查输入的电子邮件。检查输入的电子邮件地址
这样:
reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
但我需要检查,如果该电子邮件上@google.com
或@me.com
结束。像/@google.com$|@me.com$/
。几乎打破了我的想法。请帮助我)
从编程的角度来看,您应该首先检查您的电子邮件字符串terminates与@google.com
或@me.com
,然后才运行您的正则表达式。
这会节省您的时间:正则表达式将成为您知道的所有通用邮件格式正则表达式,并且您可以在任何其他时间添加更多域过滤器(将终止域放入数组或配置中...)。
它的CPU密度也很低。如果你需要连续执行这些检查,并期望将大量电子邮件过滤出来,那么你会注意到一个明显的区别:哑字符串比较比正则表达式快得多。
var emails = ['[email protected]', '[email protected]', '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) {
\t if (email.endsWith('@'+domains[i])) {
\t return true;
\t }
}
return false;
}
for (i in emails) {
email = emails[i];
if (validateEmailDomain(email) && validateEmailFormat(email)) {
\t console.log('OK for '+email);
} else {
\t console.log('NOT OK for '+email);
}
}
用正则表达式验证电子邮件地址是一件棘手的事情。我想如果你只想要允许某些域,它会简化一些东西。喜欢的东西可以做的伎俩:
\[email protected](google|me)\.com$
的\w+
的@
之前当然了简化。把它扩展到你需要的东西...
看看这个帖子https://stackoverflow.com/a/46181/8298495 –