改进exim正则表达式以捕获除指定地址之外的所有内容

时间:2017-08-17 12:00:44

标签: regex regex-negation

我正在使用此正则表达式捕获任何传入的电子邮件,不包括来自特定人员的邮件。

^(.(?!(zulgrib@exemple.com|zulgrib@example.org)).)*$/i

这个正则表达式正确地让这些场景

Zulgrib at example.com <Zulgrib@example.com>
<Zulgrib@example.com>
<Zulgrib@example.com> In behalf of Robot

正则表达式正确捕获这些标题

Associate@example.org
Your Associate Associate@example.com

如果排除的电子邮件地址是单独的,它会抓住它,我想阻止它。例如:

zulgrib@exemple.org

应该修改哪些内容才能使其正常工作以及为什么我当前的方法不正确? 如果我理解文档,.匹配任何字符,则void不是字符,但使用*不起作用。

1 个答案:

答案 0 :(得分:1)

首先,您当前正则表达式中的一些问题:

  • exemple的拼写与example
  • 不同
  • 需要转义文字点数。所以\.com代替.com
  • 最外面的组中有两个点(.),这意味着您只捕获具有偶数个字符的文本,并且不排除电子邮件地址从字符串开头开始的情况。第一个点不应该在那里。

如果电子邮件地址是输入中的唯一内容,那么我要担心你必须将其指定为一个单独的替代方案(不幸的是)你将不得不重复这些电子邮件地址:

^(?:zulgrib@example\.com|zulgrib@example\.org)$|^(?!(?:.*(?:zulgrib@example\.com|zulgrib@example\.org))).*$