Javascript 如何使用正则表达式使用DataTables进行多值或列搜索?
我正在使用 连同vbrouchet注释一起使用“;”输入多个搜索条件: .search(this.value.replace(/;/g,“|”)、true、false) 这很好,我可以在列搜索中输入“1;3”,以查找列中带有“1”或“3”的所有值。我想搜索单个整数(例如,“1”不应与“12”匹配)。我有一个有效的正则表达式,例如,要搜索1,我可以使用Javascript 如何使用正则表达式使用DataTables进行多值或列搜索?,javascript,regex,datatables,Javascript,Regex,Datatables,我正在使用 连同vbrouchet注释一起使用“;”输入多个搜索条件: .search(this.value.replace(/;/g,“|”)、true、false) 这很好,我可以在列搜索中输入“1;3”,以查找列中带有“1”或“3”的所有值。我想搜索单个整数(例如,“1”不应与“12”匹配)。我有一个有效的正则表达式,例如,要搜索1,我可以使用(?) 如果我要搜索“1”或“3”: (? 我尝试了各种选项,但无法用正确的正则表达式替换输入的字符串 我试过: $( 'input', this.
(?)
如果我要搜索“1”或“3”:
(?
我尝试了各种选项,但无法用正确的正则表达式替换输入的字符串
我试过:
$( 'input', this.footer() ).on( 'keyup change', function () {
// build search string using (?<![0-9])1(?![0-9])
var arr = this.value.split(';');
var pattern = "(?<![0-9])" + arr.join("(?![0-9])|(?<![0-9])") + "(?![0-9])"
that
// .search( this.value.replace(/;/g, '|'), true, false )
.search( this.value = pattern, true, false )
.draw();
} );
$('input',this.footer()).on('keyup change',function(){
//使用(?)生成搜索字符串?
我有一把小提琴要拉:单词边界怎么了
\b[13]\b
即
Avinash-感谢您对边界的帮助\b
我使用以下方法使其工作:
table.columns().every(function () {
var that = this;
$('input', this.footer()).on('keyup change', function () {
var arr = this.value.split(";");
var pattern = ("\\b" + arr.join('\\b|\\b') + '\\b'); // full word
// var pattern = this.value.replace(/;/g, '|') // fuzzy search
that
.search( pattern, true, false )
.draw();
});
});
JS不支持lookbehindThat's not work-我在-\b[11]测试过,b将匹配“1”而不是“11”…我的问题是如何将其与具有多个值的DataTables列搜索一起使用-我用括号键入它,即\b[11]\b而不是\b11\b。这比我的正则表达式好得多,但我仍然不知道如何使用多个值与datatables列搜索合并。感谢您的帮助,我想我更接近了,但仍然无法将正则表达式与datatables集成-这是我一直使用的JSFIDLE-
var pattern = new RegExp("\\b(?:" + arr.join("|") + ")\\b", "g" )
table.columns().every(function () {
var that = this;
$('input', this.footer()).on('keyup change', function () {
var arr = this.value.split(";");
var pattern = ("\\b" + arr.join('\\b|\\b') + '\\b'); // full word
// var pattern = this.value.replace(/;/g, '|') // fuzzy search
that
.search( pattern, true, false )
.draw();
});
});