通过正则表达式在表中搜索未显示正确的输出

时间:2014-07-23 13:33:20

标签: javascript jquery regex

这是我的搜索代码。当我搜索全文它的工作正常时,正则表达式存在一些问题,但我搜索中间字符它不起作用。

例如,如果我搜索" apple"或" ap"它的工作,但如果我用搜索" pl"它不起作用。下面是我的代码对不起英语不好。

var $rows = $('#dvtable tr');

$('#box').keyup(function() {

                    var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
                        reg = RegExp(val, 'i'),
                        text;

                    $rows.show().filter(function() {
                        text = $(this).text().replace(/\s+/g, ' ');
                        return !reg.test(text);
                    }).hide();
                });

1 个答案:

答案 0 :(得分:0)

您正在搜索以this.val()'^(?=.*\b' + $.trim($(this).val()))

开头的单词

如果你希望正则表达式匹配内部子串,你需要在你的文字之前指定一些字母

'^(?=.*\\b\\w*' + $.trim($(this).val()))

例如:

var literal = 'ap'
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i')
reg.test("apple")
>>>>true
var literal = "pl"
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i')
reg.test("apple")
>>>>true
var literal = 'x'
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i')
reg.test("apple")
>>>>false