多个特定电子邮件地址的正则表达式

时间:2012-10-19 19:15:36

标签: regex

我仍然在试图解决正则表达式问题,并遇到了一个我正试图解决的问题。如何验证多个特定电子邮件地址?

例如,我想只允许testdomain.com,realdomain.com,gooddomain.com进行验证。不允许使用所有其他电子邮件地址。

annie@testdomain.com   OK
aaron1@realdomain.com  OK
amber@gooddomain.com   OK

annie@otherdomain.com NOT OK

但我还不清楚如何为正则表达式添加多个特定的电子邮件地址。

任何和所有帮助将不胜感激。

谢谢,

6 个答案:

答案 0 :(得分:3)

您的意思是在一个正则表达式中包含各种连接域吗?

\b[A-Z0-9._%-]+@(testdomain|gooddomain|realdomain)\.com\b

答案 1 :(得分:2)

您没有指定您正在使用哪种语言,但大多数正则表达式实现都有逻辑运算符的概念,因此您的模式的域部分将具有以下内容:

(domain1|domain2|domain3)

答案 2 :(得分:1)

\b[A-Z0-9._%-]+@(testdomain|realdomain|gooddomain)\.com\b

答案 3 :(得分:0)

假设以上适用于testdomain:

\b[A-Z0-9._%-]+@(?:testdomain|realdomain|gooddomain)\.com\b

此外,请注意,您必须添加不区分大小写的i修饰符才能使用此测试用例,或者使用[A-Za-z0-9._%-]代替[A-Z0-9._%-]

请参阅here

答案 4 :(得分:0)

为了使这个可扩展到许多域,我可能会捕获域名,然后将捕获的域名与代码中的白名单进行比较。

。+ @(+)

首先,“。+”将匹配任何字符的任何数字(大于0),直到字符串中的最后一个“@”symobol。 其次,“@”将匹配“@”符号。 第三,“(。+)”将匹配并捕获(由于括号而捕获)“@”符号后面的任何字符串。

然后,根据您使用的语言,您可以获取捕获的字符串。然后,您可以查看捕获的字符串是否在您的域白名单中。注意,您将在最后一步中进行不区分大小写的比较。

答案 5 :(得分:0)

官方标准称为RFC 2822

对要允许的所有域名使用 OR 运算符|。不要忘记在域中转义.

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:testdomain\.com|realdomain\.com|gooddomain\.com)

还使用大小写不敏感修饰符/标志来允许地址中的大写字母。