【问题标题】:Regex to identify emails with only 4 characters after @ and before .tld [closed]正则表达式识别@之后和.tld之前只有4个字符的电子邮件[关闭]
【发布时间】:2012-09-14 10:07:08
【问题描述】:

我们收到了大量femlmcte@tnbt.com 形式的垃圾邮件。

我可以看到 cPanel 垃圾邮件刺客允许使用正则表达式匹配来过滤邮件。

我想写一个正则表达式来识别表单中的邮件

anylengthofstrring@abcd.com  

someotherlength@efgh.co.za

即只有四个字母之后@,但之前 .com、.co.uk、.co.za 等

【问题讨论】:

  • 那么,到目前为止,您自己尝试过什么? =)
  • 来自anylengthofstrring@abcd.com 的所有非垃圾邮件呢?我不会将来自四个字母域的所有内容标记为垃圾邮件。
  • 你不必;您可以创建一个分数有限的规则,例如一个,并希望有问题的邮件有足够的其他垃圾邮件标记以使分数高于阈值。这是 SpamAssassin 工作原理的基础。

标签: regex cpanel spam spamassassin


【解决方案1】:

尝试以下方法:

[^@]+@[a-zA-Z]{4}\.(com|co\.uk|co\.za)

解释:

[^@]+@                # One or more characters except @ followed by @
[a-zA-Z]{4}           # Matches 4 characters in the range A-Z and a-z
\.(com|co\.uk|co\.za) # Matches .com, .co.uk, and .co.za

如果您想匹配任何顶级域名,请将(com|co\.uk|co\.za) 替换为.*(我假设由于您收到这些电子邮件,您已经知道它们是有效的,因此无需验证顶级域名)。

另请注意,根据您当前的标准,您会将来自admin@food.com 的内容视为垃圾邮件,这可能是您想要的,也可能不是。

【讨论】:

  • 考虑超过三个顶级域名的可能性... =)
  • @J.Steen:是的,但我认为 OP 不想匹配这些。我想他只将这三个域视为垃圾邮件
  • OP 确实说过“等”,所以我认为他的意思不仅仅是只是那些顶级域。无论如何,只要考虑它。
  • @J.Steen:你说得对,我没看到etc。我已经编辑了我的答案以反映这一点。
  • @JoãoSilva - 感谢您花时间解释语法。 J.Steen - 我从 ^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$ 作为识别电子邮件格式的标准开始 - 并且得到了我的在尝试这里之前先考虑一下:)
【解决方案2】:

所以你想匹配一个 at 符号后跟 4 个非点字符,然后是一个点?这个规范很容易翻译成一个正则表达式:

@[^.]{4}\.

【讨论】:

  • 谢谢。计划是看看我们是否可以过滤这些邮件,然后检查过滤器以捕获任何匹配的“真实”邮件。
猜你喜欢
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
相关资源
最近更新 更多