如何编写具有两个关键字组合的正则表达式?

时间:2018-03-07 03:44:16

标签: regex spam-prevention

我正在使用正则表达式语法编写垃圾邮件过滤器。我想过滤掉任何试图垃圾邮件发送产品的电子邮件。因此,如果消息包含这两个单词的任何组合,甚至是分开的头发和成长,我想过滤它。它需要不区分大小写。例如,我经常在消息中看到

...重新长出头发....

成长.... HAIR ...

- 重新长出头发...

---头发....成长...

... ...再生长的头发...

基本上,我正在寻找一个过滤器来捕捉消息中某些地方出现的某些关键字。如果我看到单词grow与单词hair一起使用那么它很可能是某种头发粗体垃圾邮件并且应该被过滤。

因此,相同类型的过滤器可以应用于其他关键字组合。像粗体和头发,阴茎和放大等。

这些垃圾邮件发送者非常聪明,他们不会将确切的单词放在一起,他们会使用短划线或大写字母或重新命令将垃圾邮件过滤器关闭。

到目前为止,我无法想出在正则表达式中编写此类垃圾邮件过滤器的理想方法。

1 个答案:

答案 0 :(得分:0)

您可以使用具有正向前瞻的模式,这种模式会在点击任何匹配的关键字时触发,例如

^(?=.*(?:re-?)?[Gg]row)(?=.*(?:your-)?hair).*$

Demo

这种模式只是让你走上正确道路的一个粗略例子。您可能希望执行诸如添加其他逻辑之类的操作,或者在不区分大小写的模式下使用它。