这是我的搜索代码。当我搜索全文它的工作正常时,正则表达式存在一些问题,但我搜索中间字符它不起作用。
例如,如果我搜索" 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();
});
答案 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