我希望能够检查一个单词是否在一个字符串中重复超过两次。例如:
$string = "Hello hello hello."
有没有办法在 jQuery 中做到这一点?为了清楚起见,我不想检查重复的特定单词或字符,我想检查是否有任何单词重复了两次以上。我希望这有助于防止用户试图向我的论坛发送垃圾邮件。我在想一个正则表达式可能是答案,但我不知道当涉及到正则表达式时我在做什么。
这个正则表达式应该这样做:
/\b(\w+)\b(?:.*\b\1\b){2}/i
\b
匹配单词边界。\w
匹配单词组成字符。放入\w+
括号使其成为捕获组,在本例中为组 #1。\1
匹配之前捕获的任何内容。{2}
在第二组之后意味着匹配该部分两次,因此这将寻找至少 3 次重复;替换2
为您想要的任何最小值。
并且i
修饰符使其不区分大小写,因此Hello
和hello
将相互匹配。
您可能希望仅匹配特定长度的单词,例如 4 个或更多字母。然后更改\w+
为\w{4,}
. 否则,一个重复小词的句子就像a
orthe
会触发过滤器。
您还可以要求重复之间的距离应该很短,否则在段落中重复相距很远的单词可能会绊倒它。更改.*
为.{,10}
要求重复单词与前一个单词最多 10 个字符。
我不确定这真的是你需要的,但如果你想确定哪些单词是重复的,很容易用空格分割字符串。
$( document ).ready(function() {
var list=$("#wordList").val().split(' ');
alert ("initial list of words :" + list);
var listDuplicateWords = list.filter(function(item,i,allItems){
return i!=allItems.indexOf(item);
});
alert ("duplicate words:" + listDuplicateWords);
});
见 jsfiddle http://jsfiddle.net/corinnekm/Udg3P/3/