我需要一个与Perl兼容的正则表达式来过滤我的电子邮件与smtp-gated。我只想允许一个域名('mydomain.com')并拒绝其他所有域名。我该如何以万无一失的方式做到这一点? (regex_reject_mail_from)
我知道这个问题中途属于serverfault,但基本上它是一个Perl正则表达式问题所以我认为它更适合stackoverflow。
修改
这应该匹配所以我可以拒绝它:
"Someone" <someone@somedomain.com>
这不应该匹配:
"Me" <me@mydomain.com>
这也不应该匹配:
you@mydomain.com
-
答案 0 :(得分:3)
我建议如下:
\b[A-Z0-9._%+-]+@(?!mydomain\.com)[A-Z0-9.-]+\.[A-Z]{2,6}\b
使用/ i选项使其不区分大小写。
这将匹配mydomain.com
之后没有@
的大多数有效(和一些无效)电子邮件地址。请记住,正则表达式的电子邮件验证很难。
答案 1 :(得分:2)
如果您的正则表达式将应用于MTA通信中的MAIL FROM行,那么您无需关注完整的“电子邮件地址”规范。 MAIL FROM行只是'&lt;&gt;'中包含的电子邮件地址,因此任何测试@ mydomain.com&gt;的正则表达式都是应该工作。
答案 2 :(得分:1)
\b(?:"[ a-zA-Z]+")?\s*<?[a-zA-Z0-9_.]@(?!mydomain\.com)\w+(?:\.\w{2,})+>?\b
更新:请注意,这个正则表达式是完美的fa {9,} r。查看official regex的电子邮件地址以获取更多信息(向下滚动到&lt; p /&gt;标题为RFC 2822)。