正则表达式能够过滤联系人姓名欺骗

时间:2019-02-01 16:56:39

标签: regex email

我的公司已受到某些网络钓鱼者的攻击,这些网络钓鱼者在from标题中欺骗了我们的CEO联系人姓名,因为我们拥有SPF和DKIM,因此他们无法欺骗其实际电子邮件地址,否则将被阻止。所以他们发送的FROM头是:

John Doe

我希望能够过滤包含John Doe名称但不包含CEO实际电子邮件地址johndoe@mycompany.com的电子邮件。正则表达式有可能吗?

在回应评论,我不找任何输出,比赛只是是否被发现,以便它可以被用来确定邮件是否应该过滤与否。一些例子:

John Doe <johndoe@mycompany.com>           <-- do not match this
John Doe <spoofer@validemailaddress.com>   <-- match this
John Doe <asdf@aasdf.com>                  <-- match this

直到我尝试使用visualnotsobasic提供的答案之前,我才意识到这一点,但是正则表达式必须在RE2规范中。我进行了快速搜索,看来RE2前景并不乐观,所以我希望有一种解决方法...

2 个答案:

答案 0 :(得分:1)

这可能对您有用。

((John Doe\s?)(<john.?doe|<\w+)@(?!(mycompany.com)).*>)

这允许电子邮件地址中的姓和名之间带有潜在的符号,例如john_doe@whatevermail.com等。

它将排除老板的真实电子邮件地址。 您可以在这里进行测试:
https://regex101.com/

答案 1 :(得分:0)

您可能要做的就是匹配不需要的内容,并使用alternation在组中捕获要保留的内容。

在有效的电子邮件是在第一capturing group

这将匹配:

John Doe <johndoe@mycompany\.com>|(John Doe <\S+@\S+>)
  • John Doe <johndoe@mycompany\.com>匹配
  • |
  • (John Doe <\S+\S+>)在第一个捕获组John Doe中进行捕获,后跟类似模式的电子邮件,该模式匹配1+个非空白字符\S+和@,再匹配1+个非空白字符

Regex demo