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

How to use regex for multi-value OR column search using DataTables?

我正在使用 https://datatables.net/examples/api/multi_filter.html

连同使用“;”的 vbrouchet 评论输入多个搜索条件:

.search (this.value.replace(/;/g, '|'), true, false)

效果很好,我可以在列搜索中输入“1;3”以查找包含“1”或“3”的列中的所有值。我想搜索单个整数(例如,“1”不应匹配“12”)。我有一个有效的正则表达式,例如,要搜索 1 我可以使用 (?<![0-9])1(?![0-9]).

如果我想搜索“1”或“3”:

(?<![0-9])1(?![0-9])|(?<![0-9])3(?![0-9])

我尝试了各种选项,但无法用正确的正则表达式替换输入的字符串。

我试过:

$( '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();
} );

我有一个 fiddle 可以玩 : http://jsfiddle.net/mjbeller/3zqswwzt/

单词边界有什么问题?

\b[13]\b

var pattern = new RegExp("\b(?:" + arr.join("|") + ")\b", "g" ) 

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();
    });
});