-2

我希望能够检查一个单词是否在一个字符串中重复超过两次。例如:

    $string = "Hello hello hello."

有没有办法在 jQuery 中做到这一点?为了清楚起见,我不想检查重复的特定单词或字符,我想检查是否有任何单词重复了两次以上。我希望这有助于防止用户试图向我的论坛发送垃圾邮件。我在想一个正则表达式可能是答案,但我不知道当涉及到正则表达式时我在做什么。

4

2 回答 2

1

这个正则表达式应该这样做:

/\b(\w+)\b(?:.*\b\1\b){2}/i

\b匹配单词边界。\w匹配单词组成字符。放入\w+括号使其成为捕获组,在本例中为组 #1。\1匹配之前捕获的任何内容。{2}在第二组之后意味着匹配该部分两次,因此这将寻找至少 3 次重复;替换2为您想要的任何最小值。

并且i修饰符使其不区分大小写,因此Hellohello将相互匹配。

您可能希望仅匹配特定长度的单词,例如 4 个或更多字母。然后更改\w+\w{4,}. 否则,一个重复小词的句子就像aorthe会触发过滤器。

您还可以要求重复之间的距离应该很短,否则在段落中重复相距很远的单词可能会绊倒它。更改.*.{,10}要求重复单词与前一个单词最多 10 个字符。

于 2013-08-30T01:14:49.330 回答
0

我不确定这真的是你需要的,但如果你想确定哪些单词是重复的,很容易用空格分割字符串。

$( 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/

于 2013-08-30T01:30:27.987 回答