在JQuery自动完成的数组中搜索正则表达式无法正常工作。
我有一个数组:
var names = [ "Jorn Zaefferer", "Scott Gonzalez", "John Resig" ];
这是JQuery的自动完成功能:
$( "#developer" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp('^'+request.term,'g');
var arr=new Array();
for(var i=0;i<names.length;i++)
{
var index=0;
if(matcher.test(names[i])===true) //not returning true
{
console.log("it is true");
arr.push(names[i]);
}
else
{
console.log("not done");
}
}
response(arr);
}
});
条件陈述:
if(matcher.test(names[i])===true)
代码中的没有返回true。为什么呢?
答案 0 :(得分:1)
您需要删除正则表达式上的g
标志,因为这会使正则表达式对象的状态从一次搜索到下一次搜索,并且可能会搞乱。在您特定使用正则表达式时应该没有理由这样做。
然后,为了获得进一步的帮助,您可能需要告诉我们您在该数组中搜索的内容永远不会返回true。
当您开始获得匹配项时,如果您尝试累积所有匹配项,则需要将arr
变量的初始化移至for
循环之前,因此它不是在for
循环的每次迭代中重新初始化。
答案 1 :(得分:0)
如果你记录或以其他方式调试request.term
的内容,你会更清楚(和我们!:-))。
此外,我认为您需要在var arr=new Array();
之前移动for
。 var index=0;
可以删除。