【问题标题】:How to escape special characters in regular expressions如何转义正则表达式中的特殊字符
【发布时间】:2015-12-27 02:23:16
【问题描述】:

对于我的网站,我使用dataTable 插件并让用户能够过滤结果。我实现了一些过滤器,这些过滤器从结果中动态加载,并包含每列的所有不同值。

由于可以组合多个过滤器,因此我停用了智能搜索,而不得不启用正则表达式搜索。所有这些工作都很好。

我的问题是:我有像“内容(另一个内容)”这样的内容,对于那些包含括号的内容,搜索不起作用(找不到结果)。

是否有可能在调用之前屏蔽searchString

table.column('myColumn:name').search(searchString, true, false, true).draw();

我试图用“\)”或类似的东西替换字符串,但这没有帮助。如果我只是删除那些特殊字符,则也找不到结果,因为正则表达式搜索需要精确的字符串。

谁能帮帮我?

【问题讨论】:

    标签: javascript jquery regex datatables


    【解决方案1】:

    解决方案

    您可以添加和使用一个函数escapeRegExp(),它将转义特殊 MDN - Regular Expressions 文章中的字符:

    function escapeRegExp(string){
      return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
    }
    
    // ... skipped ...
    
    table.column('myColumn:name').search(escapeRegExp(searchString), true, false, true).draw();
    

    演示

    有关代码和演示,请参阅 this jsFiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-28
      • 2012-04-18
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多