检查字符串上的“ reverse cAPS lOCK”

时间:2019-01-09 13:25:29

标签: php

我们最近收到了许多垃圾邮件表单,它们的共同点是,它们似乎是由某个人写的,他们的大写锁定键被粘在上面(或者至少对它的使用非常混乱)它)。定义特征是第一个字符始终为小写,最后两个字符始终为大写。中间的那些可能是。

  

例如“ hELLO”或“ helLO”

如何检查字符串是否符合此条件?这是我到目前为止的内容:

if (strlen($x) > 3) {
    if ((preg_match('/[A-Z]+/', substr($x), -2, 2) === 1) &&
         preg_match('/[a-z]/', substr($x, 1) === 1)) {
        // do something
    }
}

但这似乎不起作用(或特别有效)。

1 个答案:

答案 0 :(得分:1)

您可以在这里使用此正则表达式来检测符合您的参数的单词,这些单词以小写char开头和以两个大写字母结尾。

/[a-z][A-Za-z]*[A-Z]{2}/

https://regexr.com/463fk

但是正如评论中所指出的那样-这可能是一个合法的错误,因此我建议不要因为输入而简单地阻止输入,而是向用户显示适当的错误消息。

除了实施蜜罐或验证码之外,应该更有效地防止垃圾邮件的提交-就我个人而言,我倾向于尝试蜜罐,然后再寻求更具侵入性的验证码解决方案。