Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用正则表达式使用DataTables进行多值或列搜索?_Javascript_Regex_Datatables - Fatal编程技术网

Javascript 如何使用正则表达式使用DataTables进行多值或列搜索?

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.

我正在使用

连同vbrouchet注释一起使用“;”输入多个搜索条件:

.search(this.value.replace(/;/g,“|”)、true、false)

这很好,我可以在列搜索中输入“1;3”,以查找列中带有“1”或“3”的所有值。我想搜索单个整数(例如,“1”不应与“12”匹配)。我有一个有效的正则表达式,例如,要搜索1,我可以使用
(?)

如果我要搜索“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();
    });
});