【发布时间】:2012-11-06 15:27:50
【问题描述】:
我正在尝试为要检查字符串是否为复制+粘贴工作的字符串编写验证函数。
背景:
我们有一个 CMS,用户可以在其中输入最少 - 例如 - 200 个字符的描述文本。很多用户写的文字太短,并得到“你必须使用超过 200 个字母”的错误信息。 为了避免这种情况,他们复制粘贴文本或一些虚拟字符串(如“AAAAA”)以达到限制。
我现在正在寻找一个函数/方法/正则表达式来检测此类复制+粘贴字符串并通过显示消息来阻止它们。
我知道没有 100% 的解决方案来防止虚拟文本,但我们想稍微减少它。有什么想法吗?
【问题讨论】:
-
你可能不得不以某种方式通过 JavaScript 来做到这一点。
-
你最好允许短文本。
-
就我个人而言,我并不担心。如果人们想玩弄这个系统,总有办法的。他们可以简单地开始输入“123456...”。如果重复是一种风格选择呢?无论哪种方式,您正在寻找的是最长的公共子字符串。我建议您将您的问题更改为此效果或基于它的谷歌。顺便说一句,这不是一个小问题,可能不值得为您引用的用例投入太多时间。
-
您将需要一个复杂的启发式算法才能接近解决这个问题。顺便说一句,您可以检查同一字符是否连续出现一定次数(例如
/(.)\1{N,}/),但这实际上只会让您到目前为止。我建议信任您的用户,否则您将在这个项目上投入大量时间。 -
要正确执行此操作,您需要对人类语言进行语言处理以获得意义,最好由人类完成。任何更少的东西都会产生更多的误报、愤怒的用户和支持麻烦,而不是阻止糟糕的描述。强迫用户做他们不想做的事情通常是行不通的,你会得到你所拥有的行为。考虑要么让它滑动。或者取消最低描述要求。或者将大描述分解成一堆更短、更容易回答的问题。
标签: php regex string validation