增量正则表达式过滤器

时间:2011-06-11 21:06:37

标签: jquery regex match

我有一长串<a>代码,我想直接过滤它们;也就是说,删除那些不匹配的。我会根据输入字段中的文本输入过滤它们。正则表达式显然会在标签内容中搜索与输入字段匹配的内容,但我想知道如何让它变得更漂亮,并且像google的搜索栏那样主动过滤列表。我想,一个关键功能会触发正则表达式功能。

我不知道怎么做的部分是:

[input field]ArI[/]

列表:

• ArIes
• ArIstotle

,即如何检查列表项的第n个字母。

修改

这是我到目前为止所做的,但它不起作用。

$("input.CardName_Input").keyup(function() {
    var getPhrase = $(".CardName_Input").val();

    new RegExp('^' + getPhrase + '.', 'i');

    $("#Results a").each(function() {
        if (!($(this).val().match(RegExp))) {
            $(this).addClass("HIDE");
        }
    })
});

2 个答案:

答案 0 :(得分:2)

据我了解,您只需检查每个列表项字符串的开头?

然后你可以使用像/^Ar./i这样的表达式吗?

在您的情况下,您可以动态构建RegExp new RegExp('^' + searchString + '.', 'i')

答案 1 :(得分:1)

  

这是我到目前为止所做的,但它不起作用。

代码构造new RegExp但实际上并没有对它做任何事情。然后它将RegExp(一个函数)传递给match。您需要将正则表达式分配给变量以便可以使用它,并将 传递给match

$("input.CardName_Input").keyup(function ()
{
    var getPhrase = $(".CardName_Input").val(),
        re = new RegExp('^' + getPhrase + '.', 'i');

    $("#Results a").each(function ()
    {
        var $this = $(this);
        if (!$this.val().match(re)) $this.addClass("HIDE");
    })
});

N.B。如果您不希望.CardName_Input中的特殊字符破坏您的代码,则需要escape getPhrase