jQuery确定一个单词是否在一个字符串中连续重复

时间:2013-08-30 01:10:46

标签: jquery regex

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

    $string = "Hello hello hello."

有没有办法在jQuery中执行此操作?为了清楚起见,我想检查已经重复的特定单词或字符,我想查看任何单词是否重复了多次两次。我希望这有助于防止用户试图垃圾论坛。我认为正则表达式可能就是答案,但我不知道我在正则表达式方面做了什么。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

您可能希望将此匹配单词设为一定长度,例如4个或更多字母。然后将\w+更改为\w{4,}。否则,重复像athe这样的小词的句子会使过滤器跳转。

您还可能要求重复之间的距离应该很短,否则在段落中重复相隔的单词可能会使其重复。将.*更改为.{,10},要求重复的字词最多不超过前一个字符。

答案 1 :(得分: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/