我们的电子邮件安全设备支持Regex RE2风格,从而使我们能够进行额外的内容过滤。随着最近显示名称欺骗的涌入,我正在用它来阻止带有某些员工名字和姓氏的电子邮件。问题是我正在尝试允许他们的个人电子邮件地址电子邮件发送,由于此更改,当前电子邮件已被隔离。
我所拥有的:
这在PCRE正则表达式中使用否定的前瞻功能(PCRE在电子邮件设备中不起作用):
(\nfrom:.*john.*doe.*<)(?!jdoe@gmail\.com>)
但是,RE2不支持负前瞻。我能找到的最接近的是:
(\nfrom:.*john.*doe.*<)([^jdoe@gmail\.com>])
此问题是它与电子邮件中没有的任何字母匹配。我想看看是否可以强迫它查看整个字符串(电子邮件)并进行完全匹配。
最后一件事是,它必须是单行的,没有什么要求它可以从程序中运行。这段代码必须粘贴到HTML表单中进行解析。
好的,经过进一步研究,我在另一篇文章中发现了这一点:https://stackoverflow.com/a/1240293/11731342
^(?:[^b]+|b(?:$|[^a]|a(?:$|[^r])))*$
将其与我的作品结合使用。我最终陷入了混乱,对于我的申请到不同的人的住址的用例来说,编辑起来并不容易,但是可以完成工作:
(\nfrom:.*john.*james.*<)((?:[^j]+|j(?:$|[^j]|j(?:$|[^a]|a(?:$|[^m]|m(?:$|[^e]|e(?:$|[^s]|s(?:$|[^@]|@(?:$|[^e]|e(?:$|[^m]|m(?:$|[^a]|a(?:$|[^i]|i(?:$|[^l]|l(?:$|[^.]|.(?:$|[^c]|c(?:$|[^o]|o(?:$|[^m]|m(?:$|[^>])))))))))))))))))*$)