负面预测与特定* .TLD不匹配

时间:2014-11-21 00:02:51

标签: regex email regex-lookarounds

我有SMTP日志,它们分为字段。我正在检查TO字段,并希望仅在TO地址不是*.com时才能看到电子邮件日志。如果有多个地址且至少有一个不是*.com,我也希望看到这一点。

当只有一个电子邮件地址时,我的语法有效,但是,如果TO行中有多个电子邮件地址,其中一个包含“.com”,或者地址的子域名为{{1},则表示我遇到问题当发生这种情况时,如果有一个条目不是mail.testnet.com,我仍然希望看到日志文件。

如果至少有一个地址不是*.com,我有什么方法可以写这个匹配吗?

当前语法

*.com

按预期工作

失败 ^((?!\.com).)*$

通行证 TO: <b.smith@mail.com>

通行证 TO: <j.smith@mail.net>


不能按预期工作

失败 TO: <j.smith@mail.net>, <c.smith@mail.org>, <d.smith@mail.tv>

通行证 TO: <j.smith@mail.net>, <b.smith@mail.com>, <c.smith@mail.org>, <d.smith@mail.tv>

通行证 TO: <b.smith@live.mail.com>

1 个答案:

答案 0 :(得分:1)

在正面展望中使用嵌套的负面向前看:

^(?=.*<[\w.]+@\w+\.(?!com)\w+>).*

请参阅demo

这说“断言有一个点后跟'com'以外的东西”