如何解决在RegExp构建之前对正则表达式字符字符串进行消毒?
| 我想使用字符串来执行全局正则表达式,但其中可能包含正则表达式字符。在用它构建一个正则表达式之前,转义字符串中所有正则字符的最佳方法是什么? 基本上我可能会有这样的事情;var test = \'test.\';
var regex = new RegExp(test,\'ig\');
我需要\'test。\'成为\'test \\。\',所以它不会以意外的方式运行。
解决方法
new RegExp(test.replace(/[#-.]|[[-^]|[?|{}]/g,\'\\\\$&\'));
或者简单地:
new RegExp(test.replace(/[#-}]/g,\'\\\\$&\'));
后者最终将逃逸的次数超过了应有的幅度,但不会造成任何伤害。
, 这会将所有特殊的RegExp字符替换为它们的转义版本:
test = test.replace(/[\\\\\\.\\+\\*\\?\\^\\$\\[\\]\\(\\)\\{\\}\\/\\\'\\#\\:\\!\\=\\|]/ig,\"\\\\$&\");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。