在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, \"\\\\$&\");
    

要回复问题请先登录注册