0

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

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

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

annie@otherdomain.com NOT OK

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

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

谢谢,

4

6 回答 6

3

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

\b[A-Z0-9._%-]+@(testdomain|gooddomain|realdomain)\.com\b
于 2012-10-19T19:17:43.217 回答
2

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

(domain1|domain2|domain3)
于 2012-10-19T19:19:20.347 回答
1
\b[A-Z0-9._%-]+@(testdomain|realdomain|gooddomain)\.com\b
于 2012-10-19T19:18:35.390 回答
0

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

.+@(.+)

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

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

于 2012-10-19T19:47:02.673 回答
0

官方标准称为RFC 2822

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

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

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

于 2012-10-19T20:04:00.217 回答
0

假设以上适用于 testdomain:

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

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

这里

于 2012-10-19T19:18:16.937 回答