我想要的很简单。我有一个输入字段,我想检查无序列表 (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
所以我想知道如何在模式中插入该值。
最佳答案
要创建基于动态数据的模式,您可以使用 RegExp
ctor向它传递一个模式字符串。例如
var word = 'foo';
var re = new RegExp(word, 'g'); // var re = /foo/g
别忘了 escape characters在正则表达式中具有特殊含义。
但是,如果您只是寻找简单的“y 中的 x”比较,indexOf
可以非常快速地执行此检查:
var sample = 'this is a foo sentence';
var loc = 'Hello, world!'.indexOf('world') // 7
然后只需检查 indexOf(...) != -1
是否。
关于用于从输入值进行测试的 Javascript 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973455/