基于用户筛选列表项目's在javascript中的搜索词

filtering list items based on user's search terms in javascript

本文关键字:javascript 搜索 于用户 用户 项目 列表 筛选      更新时间:2023-09-26

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

问题:试着输入单词"comparison",你会发现除了那些包含单词"comparation"的列表外,列表都隐藏了。到目前为止还不错。。。但是,如果你点击空格并添加更多的单词,比如该字符串中存在的单词"extracted",它会找到包含这两个单词的列表项。我想要的是AND而不是OR。基本上,我想显示包含这两个单词的列表项。因为正如你所能想象的,通过放置更多的单词,列表会变得更大而不是更小。

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

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

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

试试这个。它应该生成这样的字符串:^(?=.*?honda)(?=.*?accord)。这样,字符串中的每个项都必须位于字符串中的某个位置。

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