在JavaScript中搜索正则表达式

时间:2013-08-28 21:54:45

标签: jquery regex autocomplete jquery-autocomplete

在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。为什么呢?

2 个答案:

答案 0 :(得分:1)

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

然后,为了获得进一步的帮助,您可能需要告诉我们您在该数组中搜索的内容永远不会返回true。

当您开始获得匹配项时,如果您尝试累积所有匹配项,则需要将arr变量的初始化移至for循环之前,因此它不是在for循环的每次迭代中重新初始化。

答案 1 :(得分:0)

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

此外,我认为您需要在var arr=new Array();之前移动forvar index=0;可以删除。