1

在数组中搜索 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。为什么?

4

2 回答 2

1

您将需要删除g正则表达式上的标志,因为这会使您的正则表达式对象的状态从一个搜索到下一个搜索,并且可能会搞砸。在您对正则表达式的特定使用中应该没有理由这样做。

然后,为了获得进一步的帮助,您可能需要向我们展示您在那个永远不会返回 true 的数组中搜索的确切内容。

当您开始获取匹配项时,如果您尝试累积所有匹配项,则需要将arr变量的初始化移动到for循环之前,这样它就不会在循环的每次迭代中重新初始化for

于 2013-08-28T22:01:23.877 回答
0

如果您记录或以其他方式调试 的内容request.term,您(和我们!:-) 会更清楚。

另外,我认为您需要var arr=new Array();for. var index=0;可以删除。

于 2013-08-28T22:01:27.970 回答