在RegExp构建之前清理正则表达式字符串?

Ste*_*ger 10 javascript regex sanitization

我想使用字符串来执行全局正则表达式,但它可能包含正则表达式字符.在使用它构建正则表达式之前,在字符串中转义所有正则表达式字符的最佳方法是什么?

基本上我可能有这样的事情;

var test = 'test.';
var regex = new RegExp(test, 'ig');
Run Code Online (Sandbox Code Playgroud)

我需要'测试'.成为'测试\'.所以它不会以意想不到的方式表现.

Mar*_*ahn 11

new RegExp(test.replace(/[#-.]|[[-^]|[?|{}]/g, '\\$&'));
Run Code Online (Sandbox Code Playgroud)

或者干脆:

new RegExp(test.replace(/[#-}]/g, '\\$&'));
Run Code Online (Sandbox Code Playgroud)

后者最终会逃避比它应有的更多,但它不会伤害任何东西.