Javascript 自定义jquery.datatables插件以在两列上使用正则表达式进行筛选

Javascript 自定义jquery.datatables插件以在两列上使用正则表达式进行筛选,javascript,jquery,regex,datatables,Javascript,Jquery,Regex,Datatables,我正在使用找到的jquery datatables插件。有两列,分别命名为“新总账”和“旧总账”。datatables插件有一个名为search的内置功能,它根据您在文本框中输入的关键字过滤表中的数据 以下是我的数据当前的样子: 当我在想要的文本框中键入“40.88.1010.0”或“40.88.600000.05”时 此记录将显示。 同样的规则适用于所有记录。我希望搜索继续使用单个文本框过滤所有列,但对于“New GL”和“Old GL”列,我希望用户能够同时使用“-”和“.”字符 我最初

我正在使用找到的jquery datatables插件。有两列,分别命名为“新总账”和“旧总账”。datatables插件有一个名为search的内置功能,它根据您在文本框中输入的关键字过滤表中的数据

以下是我的数据当前的样子:

当我在想要的文本框中键入“40.88.1010.0”或“40.88.600000.05”时 此记录将显示。

同样的规则适用于所有记录。我希望搜索继续使用单个文本框过滤所有列,但对于“New GL”和“Old GL”列,我希望用户能够同时使用“-”和“.”字符

我最初的想法是,如果datatables有一个regex选项,它就会工作,因为regex中的“.”是任意字符。但我只希望规则适用于这两列

使用datatables插件可以做到这一点吗

以下是我当前的数据表初始化代码:

$(document).ready(function () {
    var table = $('#datatable').DataTable({ "iDisplayLength": 50 });
});

您可以添加
数据搜索
属性。 然后,您的行将变成这样:

<tr>
  <td data-search="40.88.1010.0">40-88-1010-0</td>
  <td data-search="40.88.600000.05">40-88600000-05</td>
</tr>

40-88-1010-0
40-88600000-05
默认情况下,Datatables的筛选使用所有行中的数据

解决方案

您需要实现如下所示的自定义搜索功能

此方法的缺点是,其他列中的内容也将以相同的方式进行搜索,即使用
-
字符进行搜索

$(文档).ready(函数(){
var table=$('#datatable')。datatable({
“页面长度”:50
});
$('.dataTables_筛选器输入',table.table().container())
.off(“.DT”)
.on('keyup.DT cut.DT paste.DT input.DT search.DT',函数(e){
//如果长度为3个或更多字符,或用户按ENTER键,则搜索
如果(this.value.length>0){
//转义表达式,以便执行正则表达式匹配
var val=$.fn.dataTable.util.escapeRegex(this.value);
//添加正则表达式以匹配.和-字符
val=val.replace(/(\\-\\\\)/g,“[\\\.\\-]”;
//调用API搜索函数
table.search(val,true,false).draw();
}否则{
//如果他们退格足够远,确保我们清除搜索
table.search(“”.draw();
}    
});
});
演示


有关代码和演示,请参见。

有关
新GL
[-0-9]{15}
这是一个数字或破折号正好15次。您希望用户能够搜索其他列还是这两列?@Gyrocode.com我希望用户能够搜索所有列。您能显示您的DataTables初始化代码吗?@Gyrocode.com当然,我已将代码添加到我的帖子中。@user3788671,但是使用此解决方案,您将无法使用
-
搜索。@Gyrocode.com我没有对其进行足够的测试。我原以为它行得通,但当我把整个数字打出来时就不行了。