我希望能够检查单词是否在字符串中重复两次以上。例如:
$string = "Hello hello hello."
有没有办法在jQuery中执行此操作?为了清楚起见,我不想检查已经重复的特定单词或字符,我想查看任何单词是否重复了多次两次。我希望这有助于防止用户试图垃圾论坛。我认为正则表达式可能就是答案,但我不知道我在正则表达式方面做了什么。
答案 0 :(得分:1)
这个正则表达式应该这样做:
/\b(\w+)\b(?:.*\b\1\b){2}/i
\b
匹配单词边界。 \w
匹配单词构成字符。将\w+
括在括号中使其成为捕获组,在本例中为组#1。 \1
匹配之前捕获的内容。 {2}
在第二组之后意味着将该部分匹配两次,因此这将至少重复3次;用你想要的最小值替换2
。
i
修饰符使其不区分大小写,因此Hello
和hello
会相互匹配。
您可能希望将此匹配单词设为一定长度,例如4个或更多字母。然后将\w+
更改为\w{4,}
。否则,重复像a
或the
这样的小词的句子会使过滤器跳转。
您还可能要求重复之间的距离应该很短,否则在段落中重复相隔的单词可能会使其重复。将.*
更改为.{,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/