0

我正在尝试为用户输入到文本框中的字符串查找匹配模式,在大多数情况下,我的代码都成功了,但我发现在某些情况下,它不会返回所有需要的结果。我附上了一个 jsfiddle 链接以显示它的 wrking,我还将粘贴代码以供将来参考

http://jsfiddle.net/faphf/2/

$("#facetSearchBox").live("keyup",
    function() {
        $("#test").empty();
        facetSearch();
    });



 function facetSearch(){ 
 var facetSearchTerm = $("#facetSearchBox").val();
 facetSearchTerm = facetSearchTerm.toLowerCase();
 var inputArray=["mark zuckerberg","ben s bernanke","ben bernanke","sven grundberg",    "michael bloomberg","robert powell","kenneth lieberthal","frank boulben"];

  var re = new RegExp(facetSearchTerm, "ig");
  var outputArray = inputArray.filter(function(item) {
     return re.test(item);
});
for(var k=0; k<outputArray.length;k++){
$("#test").append(outputArray[k] + "<br>" );
}
}

尝试搜索本,它不会返回所有所需的结果......如果你能帮我找出代码有什么问题,那会很有帮助?

4

2 回答 2

4

g从您的正则表达式中删除全局修饰符。之后它应该可以正常工作。

var re = new RegExp(facetSearchTerm, "i");

测试链接:http: //jsfiddle.net/faphf/5/

编辑:

为什么 Javascript 中带有全局标志的 RegExp 会给出错误的结果?

于 2012-12-18T06:06:13.117 回答
1

采用:

 var re = new RegExp( facetSearchTerm, "i");

参见:小提琴

对于词边界匹配:

 var re = new RegExp("\\b" + facetSearchTerm, "i");

参见:小提琴

于 2012-12-18T06:08:55.177 回答