2017-07-30 59 views
0

在JavaScript中学习正则表达式。我需要检查输入的电子邮件。检查输入的电子邮件地址

这样:

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

但我需要检查,如果该电子邮件上@google.com@me.com结束。像/@google.com$|@me.com$/。几乎打破了我的想法。请帮助我)

+0

看看这个帖子https://stackoverflow.com/a/46181/8298495 –

回答

3

从编程的角度来看,您应该首先检查您的电子邮件字符串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); 
 
    } 
 
}

+0

所以最好这样做'return/^ \ w +([ .-]?\ w +)* @ \ w +([\ .-]?\ w +)*(\。\ w {2,3})$ /。test(string)&& /@outlook\.com$|@我\ .COM $ /测试(串)'? – RoGGeR

+0

不,我会给你写一个伪代码的例子 – Fabien

+0

好的,谢谢!我将等待 – RoGGeR

1

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

\[email protected](google|me)\.com$ 

\w+@之前当然了简化。把它扩展到你需要的东西...