我有一长串<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");
}
})
});
答案 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
。