我正在尝试找到用户输入到文本框中的字符串的匹配模式,我在大多数情况下使用我的代码成功使用代码,但在某些情况下我发现,它不会返回所有需要的结果。我附加了一个jsfiddle链接来显示它的wrking,我还将粘贴代码以供将来参考
$("#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>" );
}
}
尝试搜索ben,它不会返回所有期望的结果...如果您可以帮我告诉代码有什么问题会有帮助吗?
答案 0 :(得分:4)
从正则表达式中删除全局修饰符g
。之后它应该可以正常工作。
var re = new RegExp(facetSearchTerm, "i");
测试链接:http://jsfiddle.net/faphf/5/
修改强>
Why RegExp with global flag in Javascript give wrong results?
答案 1 :(得分:1)