我想要的很简单。我有一个输入字段,我想检查无序列表(ul
)中的哪些项包含输入值。
所以,我有这个:
$('input#search').keyup(
function() {
var value = $(this).val();
if (value.length > 0) {
var patt = /value/g;
console.log(patt);
$('ul#list li').filter(function() {
return (patt.test($(this).html()));
});
}
}
);
我的问题是,例如,如果输入的值是'abcd' patt将是/value/g
而不是/abcd/g
所以我想知道如何我可以在模式中插入值。
答案 0 :(得分:0)
将patt定义为新的RegExp
var patt = new RegExp(value,"g")
答案 1 :(得分:0)
要根据动态数据创建模式,您可以使用RegExp
ctor传递一个模式字符串。 e.g。
var word = 'foo';
var re = new RegExp(word, 'g'); // var re = /foo/g
不要忘记在regexp中具有特殊含义的escape characters。
但是,如果您只是在寻找一个简单的“在x之内是x”的比较,indexOf
可以很快执行此检查:
var sample = 'this is a foo sentence';
var loc = 'Hello, world!'.indexOf('world') // 7
然后只需检查indexOf(...) != -1
。