我使用了一段jQuery来突出显示搜索结果,它很好但我想匹配所有单个单词而不是我输入的整个短语,如果我搜索“lorem ipsum dolor”它会查找此匹配短语,但我希望脚本高亮显示所有单个单词而不是整个短语
继承我的jQuery代码
$("#main-search-input").bind('keyup', function(e){
var text = $.trim($(this).val());
if(text !== '' && text !== ' '){
var pattern = new RegExp(text, "gi");
}
$('.sr-results a').each(function(i){
var str = this;
var orgText = $(str).text();
orgText = orgText.replace(pattern, function($1){
return "<b class='sr-highlight'>" + $1 + "</b>";
});
$(str).html(orgText);
});
});
答案 0 :(得分:4)
将字符串拆分为空格,然后将正则表达式构建为/(word1 | word2 | word3)/。
var pattern = new RegExp('('+$.unique(text.split(" ")).join("|")+')',"gi");
答案 1 :(得分:0)
将搜索字词分解为单词。
var words = text.split(' ');
确保没有重复。
$.unique( words );
最后你只是按照循环
做你正在做的事情for ( var i = 0, len = words.length; i < len; i++ ) {
var word = words[i],
pattern = new RegExp(word, "gi");
//and so on
}