如何在PHP中匹配这种随机字符串?

eas*_*der 0 php regex preg-match

我正在尝试构建一个自制垃圾邮件过滤器.并且想要编写正则表达式以匹配以下模式.我怎样才能做到这一点?谢谢.

UBmDNFZGrvtbFtxWMq

但不是这种空间或数字.

$ 800

不确定

我有一个用户输入反馈的表单,类似的东西.我正在尝试检测垃圾邮件.我尝试使用谷歌reCaptcha网络服务.但似乎困难程度很高,我不喜欢这样.如果用户第一次输入错误,我认为它会再次停止一些用户输入.我也尝试了一些span过滤器Web服务供应商,但它看起来像用户消息将发送到他们的服务器.我觉得不舒服.

所以我想出了一个构思模式匹配函数来验证一些用户输入表单值的想法.这个问题是我想要匹配的模式之一.

Mar*_*ers 6

我不打算尝试制作垃圾邮件过滤器.SpamAssassin等许多其他人已经很好地解决了这个问题.

但是,解决方案可能看起来像这个正则表达式来检测一长串字母:

/\b[A-Za-z]{18,}\b/
Run Code Online (Sandbox Code Playgroud)

避免在合法的18个字母单词上进行错误匹配的改进是检查在正常单词中很少发生的事情,例如在小写字母后出现的大写字母:

/(?:[A-Z]*[a-z]+[A-Z])[A-Za-z]{18,}\b/
Run Code Online (Sandbox Code Playgroud)

这可能仍然会给出一些错误的匹配(例如,名称"SpamAssassin"只是与正则表达式匹配的几个字母).它将适用于您提供的示例和大多数普通文本 - 但对于代码示例则不太好.

垃圾邮件检测通常使用许多更复杂的技术,这些技术无法仅使用正则表达式进行复制.最好查看其他指标,例如每个字母的字母频率,并检查单词是否在字典中找到.通常没有一种技术可以产生良好的效果 - 需要技术组合以及每种技术的得分等级.如果一封电子邮件触发了太多高评分规则,那么它就会被标记为垃圾邮件,但如果它只能点击一些低评分规则,那么它可能是可以接受的.评分系统可以由用户配置.

编辑:关于问题的更新,因为这是用于在Web表单上输入数据,防止垃圾邮件的标准方法之一是使用CAPTCHA,例如reCAPTCHA.