将多个正则表达式应用于 DataTable 列
Posted
技术标签:
【中文标题】将多个正则表达式应用于 DataTable 列【英文标题】:Apply multiple Regular Expressions to a DataTable column 【发布时间】:2021-10-23 12:25:58 【问题描述】:我有一个数据表,其中有一列包含用逗号分隔的 ID。这与多选下拉列表配对以过滤行。使用正则表达式按单个 Id 过滤时,一切正常。但是现在我需要按多个 ID 进行过滤。我正在为每个选定的 Id 创建多个正则表达式,并将它们连续应用于列。但结果看起来不太对。下面是所有操作所在的多选下拉列表的更改处理程序的代码。感谢您提供任何帮助或建议。
$("#skillsSearch").on("change", function ()
var val = $("#skillsSearch").val();
if (!val || val.toString().indexOf(-1) >= 0)
table.search('')
.columns()
.search('')
.draw();
$("#skillsSearch")[0].sumo.unSelectAll();
return;
@if (ViewBag.AdminView)
@if (includeInactive)
@html.Raw("var columnNdx = 9;");
else
@Html.Raw("var columnNdx = 8;");
else
@Html.Raw("var columnNdx = 5;");
var searchTerms = val.toString().split(',');
var regexPattern = "";
for (var i = 0; i < searchTerms.length; i++)
regexPattern += '(^,?' + +searchTerms[i] + ',?\\D)|(,?\\D' + +searchTerms[i] + ',?\\D)|(,?\\D' + +searchTerms[i] + ',?$)';
var tb = table.columns(columnNdx)
.search(regexPattern, true, false);
regexPattern = "";
tb.draw();
);
【问题讨论】:
这个问题是否缺少标签?可能是asp.net
或asp.net-mvc
?
【参考方案1】:
经过一番搜索,我发现了一篇帖子,有人建议创建我自己的搜索插件...他指向DataTables Site Blog 的博客...这需要一些努力,但它就像我一样工作想要它......下面是我用来实现所需行为的代码,以防其他人登陆这里......
$("#skillsSearch").on("change", function ()
table.draw();
);
$.fn.dataTable.ext.search.push(function (settings, searchData)
var val = $("#skillsSearch").val();
if (!val)
return true;
@if (ViewBag.AdminView)
@if (includeInactive)
@Html.Raw("var columnNdx = 9;");
else
@Html.Raw("var columnNdx = 8;");
else
@Html.Raw("var columnNdx = 5;");
var searchTerms = val.toString().split(',');
var regexPattern = "";
for (var i = 0; i < searchTerms.length; i++)
regexPattern = '(^,?' + +searchTerms[i] + ',?\\D)|(,?\\D' + +searchTerms[i] + ',?\\D)|(,?\\D' + +searchTerms[i] + ',?$)';
var match = searchData[columnNdx].match(regexPattern);
if (!match) return false;
regexPattern = "";
return true;
);
【讨论】:
以上是关于将多个正则表达式应用于 DataTable 列的主要内容,如果未能解决你的问题,请参考以下文章
在 Pyspark 中按顺序应用多个正则表达式进行文本清理的最快方法