数据表正则表达式搜索无法按预期工作以实现完全匹配
DataTables regex search not working as expected for exact match
我想在我的 DataTable 的一列中搜索一个精确的值,并只返回包含该值的行。我已经读到执行此操作的方法是对特定值进行正则表达式搜索,但是当我尝试这样做时,确切的正则表达式搜索不会返回任何内容。
例如,在下表中,我只想返回包含 id=0 的行
<table id="searchTable" class="formTable display dataTable" cellspacing="0" style="width: 100%;">
<thead>
<tr>
<th>id</th>
<th>Position</th>
<th>Office</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>Accountant</td>
<td>Tokyo</td>
</tr>
<tr>
<td>1</td>
<td>Chief Executive Officer (CEO)</td>
<td>London</td>
</tr>
<tr>
<td>2</td>
<td>Junior Technical Author</td>
<td>San Francisco</td>
</tr>
<tr>
<td>10</td>
<td>Software Engineer</td>
<td>London</td>
</tr>
<tr>
<td>20</td>
<td>Software Engineer</td>
<td>San Francisco</td>
</tr>
</tbody>
</table>
加载文档时,我尝试使用此处所述的搜索 api。
var table = null;
$(document).ready(function(){
table = $('#searchTable').DataTable( {
"sPaginationType": "full_numbers",
"iDisplayLength": 5
} );
table.columns(0).search('/0/',true,false).draw();
} );
JS小提琴显示正则表达式失败
诀窍是将起始字符符号"^"放在要搜索的值之前,将结束字符符号"$"放在值之后。如果不给出这两个符号,正则表达式将始终不返回任何内容。
固定部分:
var table = null;
$(document).ready(function(){
table = $('#searchTable').DataTable( {
"sPaginationType": "full_numbers",
"iDisplayLength": 5
} );
table.columns(0).search('^0$',true,false).draw();
} );
以防其他人面临此问题。就我而言,问题与搜索在正则表达式中具有特殊含义的字符串字符有关(例如。"AC (JLHA2) - GB/T1179-2008
"即使数据存在于表中也不会给出任何内容)。
我能够通过使用$.fn.dataTable.util.escapeRegex()
来转义所有特殊字符来解决此问题。
这是修复:
var table = null;
$(document).ready(function(){
table = $('#searchTable').DataTable( {
"sPaginationType": "full_numbers",
"iDisplayLength": 5
} );
// Escape the expression so we can perform a regex match
var val = $.fn.dataTable.util.escapeRegex('AC (JLHA2) - GB/T1179-2008');
table.columns(0).search(val ? '^' + val + '$' ; '', true, false).draw();
} );
相关文章:
- 实现幻灯片放映后,导航菜单无法工作
- 如何实现nanoScroller,使其正确工作
- 在节点中,使用Q,使两个函数并行工作,但只等待第一个函数实现其承诺
- config.fullPage = true;在 ckEditor 内联模式下无法正常工作.如何实现这一点
- 数据表正则表达式搜索无法按预期工作以实现完全匹配
- Javascript + Quicksort:这个维基百科实现是如何工作的
- Facebook喜欢在Firefox中不可点击的按钮iframe实现,可以在其他浏览器中工作
- 如何实现 emit 以同步方式工作
- Jquery为我的插件实现了一个成功和错误回调,该插件与AJAX一起工作
- AngularJs Jcarousel实现仅在调整页面大小后才能工作
- 如何删除有缺陷的服务工作线程,或实现“终止开关”
- 通过clone()实现对象继承是如何工作的
- 重新实现Array.prototype.slice的JavaScript谜题未按预期工作
- 这个AngularJS是如何工作的;HelloWorld"应用有些人怀疑Angular是如何实现MVC模式的
- 当我为来自服务器的数据实现了更多的angular js代码时,Carousel停止了工作
- 转义字符的实现是否在JavaScript和PHP中类似地工作,或者两者的实现是否有任何差异
- 实现“喜欢”功能的问题.函数只工作一次
- 映射/设置与ie8工作的实现
- 如何在AngularJS中使用Promises实现同步工作流
- 实现了AngularJS视图,现在Nivo Slider不能工作了