我的问题是基于这个原始的小提琴:https://jsfiddle.net/x92c3qu2/
这是我正在寻找的一种例子。 但我的问题是当任何值具有特殊字符(例如圆括号)时,该示例不起作用。
这是我的代码 - 几乎与原始链接相似
$('#dropdown').multiselect({
onChange: function(element, checked) {
var cities = $('#dropdown option:selected');
var selected = [];
$(cities).each(function(index, city) {
selected.push([$(this).val()]);
});
var regex = selected.join("|");
$('#table').DataTable().column(1).search(
regex, true, false, true
).draw();
}
});
});
https://jsfiddle.net/x92c3qu2/110/ - 编辑了我的小提琴
现在,如果您选择" (巴黎)法国",尽管在表格中有记录,但它不会显示任何结果。
(尝试通过更改搜索(regax,true,false,true) - 但无法正常工作。
如果您选择" 巴黎",则会显示与" 巴黎"相关的记录 - 根据我的说明是错的。当从下拉列表中选择值时,它应该显示确切的结果。
尝试选择带有和不带特殊字符的多个值 - 结果很奇怪。
如果需要进一步说明,请与我们联系。
答案 0 :(得分:0)
如果您希望正则表达式与确切的字符串匹配,则必须使用^
和$
字符封装搜索字符串。如果字符串必须与确切的字符串匹配,则可以在smart
方法中禁用search
选项。
条目(巴黎)法国有两个问题。在您的示例中,您正在推送设置为 Paris_France 的option
元素的值,但在您的表格中,要查找的条目仍然是(巴黎)法国所以你应该改变它。
第二个问题是(
是Regex中的一个特殊字符,你应该在这种情况下转义,在添加值时考虑这样的事情:
selected.push(['^(' + $(this).val().replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') +')$']);
我已根据我提议的更改修改了您的JS fiddle。