正则表达式负向前瞻(PCRE)

时间:2017-09-26 15:15:21

标签: regex pcre email-validation

我正在尝试创建一个PCRE来匹配电子邮件来自具有与尖括号中的地址不匹配的真实姓名的行。我知道它在代码中是微不足道的,但这需要在正则表达式中工作。

大多数人将他们的真实姓名放在From行中,例如:

bob@example.com <susie@domain.com>

但垃圾邮件发送者通常会尝试伪造收件人打开我假装来自Bob的电子邮件,方法是使用他在真实姓名中的电子邮件地址使用受感染的帐户:

/([^@]+@[^\s]+) <(?!\1)>/

我正在尝试编写一个能识别电子邮件的PCRE正则表达式,其中真实姓名是电子邮件地址并且与斜角括号中的地址不匹配。

这是我们所拥有的(故意过度简化)

(?!\1)

问题是<>是零宽度负向前瞻,它不会消耗斜角括号中的地址。上面目前仅在有角度的括号为空时匹配,即:Bob Jones <bob@example.com> bob@example.com <bob@example.com>

有人有任何建议吗?

不匹配:

bob@example.com <susie@domain.com>

应匹配:

{{1}}

0 个答案:

没有答案