我仍然在试图解决正则表达式问题,并遇到了一个我正试图解决的问题。如何验证多个特定电子邮件地址?
例如,我想只允许testdomain.com,realdomain.com,gooddomain.com进行验证。不允许使用所有其他电子邮件地址。
annie@testdomain.com OK
aaron1@realdomain.com OK
amber@gooddomain.com OK
annie@otherdomain.com NOT OK
但我还不清楚如何为正则表达式添加多个特定的电子邮件地址。
任何和所有帮助将不胜感激。
谢谢,
答案 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)
还使用大小写不敏感修饰符/标志来允许地址中的大写字母。