从输入值测试的Javascript模式

时间:2014-01-07 13:56:01

标签: javascript regex input html-lists

我想要的很简单。我有一个输入字段,我想检查无序列表(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所以我想知道如何我可以在模式中插入值。

2 个答案:

答案 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