在javascript中根据用户的搜索词过滤列表项

时间:2011-06-21 21:55:59

标签: javascript jquery regex search

我根据用户的输入过滤(显示和隐藏)一组列表项。在这里查看:http://jsfiddle.net/m5dzG/2/

问题: 尝试输入“比较”一词,您将看到列表隐藏,但其中包含“比较”一词的列表除外。好到目前为止...但如果你点击空格并添加更多的术语,如该字符串中存在的“外推”一词,它将找到具有这些词之一的列表项。我想要的是AND而不是OR。基本上我想显示包含这两个单词的列表项。因为正如你可以想象的那样,通过增加更多的术语,列表变得更大而不是更小。

我认为问题出在我的正则表达式中

var search_text = jQuery('#search').val();
var rg= new RegExp('('+$.unique(search_text.split(" ")).join("|")+')',"i");

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:1)

试试这个。它应该是这样的字符串:^(?=.*?honda)(?=.*?accord)。这样,字符串必须在字符串中的某个位置包含每个术语。

var search_text = jQuery('#search').val();
var rg= new RegExp('^(?=.*?'+$.unique(search_text.split(" ")).join(")(?=.*?")+')',"i");