用于从输入值进行测试的 Javascript 模式

标签 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 所以我想知道如何在模式中插入该值。

最佳答案

要创建基于动态数据的模式,您可以使用 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/

相关文章:

javascript - 如何让 Bootstrap 3 在下拉单击时下推页面内容

javascript - 如何从某个地方开始拆分字符串?

mysql - 使用 REGEXP (MySql) 在单词边界内查询以字符串开头/结尾的记录

c - 我的程序要求输入的次数太多。 C while 循环

javascript - 捕获并显示隐藏输入中的文本

javascript - 运行 selenium 测试时处理 javaScript 警报?

javascript - 为什么 JQuery on() 事件处理程序不使用 contenteditable 从动态生成的元素中捕获事件?

javascript - 在 javascript 中获取对象值不起作用

php - 正则表达式将哈希封闭的 `##WORD=123##` 替换为方括号`[object word=123]`

c - C中的文件,如何进行输入