Javascript中对字符串进行正则转义 - js字符串转义
目标
var str = '[alias] cp -p ../../repo/.gitignore ./';
var strEncoded = regScapeStr( str ); // 自建函数,如下
console.log(strEncoded);
// 输出结果: \[alias\] cp \-p \.\.\/\.\.\/repo\/\.gitignore \.\/
方法
function regScapeStr (str) {
return str.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, '\\$&');
}
感谢:
regex - Is there a RegExp.escape function in JavaScript? - Stack Overflow
javascript - 如何在正则表达式中转义特殊字符
对于我的网站,我使用dataTable插件,并为用户提供了过滤结果的可能性。我实现了一些过滤器,该过滤器从结果中动态加载,并包含每一列的所有不同值。
由于可以组合多个过滤器,因此我停用了智能搜索,而不得不启用了regEx-search。所有这些事情都很好。
我的问题是:我有“内容(另一个内容)”之类的内容,对于那些包含方括号的内容,搜索不起作用(未找到结果)。
可以在调用前屏蔽searchString
吗?
table.column('myColumn:name').search(searchString, true, false, true).draw();
我试图将字符串替换为“ \)”或类似的内容,但这无济于事。如果我只是删除那些特殊字符,则无法找到结果,因为regEx搜索需要精确的字符串。
谁能帮我吗?
最佳答案
解
您可以添加并使用将转义特殊字符的功能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。
关于javascript - 如何在正则表达式中转义特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32846782/
————————————————
版权声明:本文为CSDN博主「Rudon滨海渔村」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq285744011/article/details/120948339