Javascript 带变量的正则表达式

Javascript regex with variable

我在名为 js 的变量中有以下字符串:

some code here
/* start-rotateControlOptions */
some more code here
on multiple
lines
/* end-rotateControlOptions */
some code here

最后我想:

some code here
some code here

基本上转义这两个特定评论之间的所有内容。

以下作品:

js = js.replace(/\/\* start-rotateControlOptions \*\/([\s\S]*)\/\* end-rotateControlOptions \*\//, '');

但现在我需要将 rotateControlOptions 作为变量。

这是我尝试过但无济于事的方法:

js = escapeCode(js, 'rotateControlOptions');

function escapeCode(js, identifier) {

    var re = new RegExp("/\/\* start-" + identifier + " \*\/([\s\S]*)\/\* end-" + identifier + " \*\//");
    js = js.replace(re, '');
    return js;
}

我做错了什么?我没有收到任何错误。

再次转义所有反斜杠,您不需要在 RegExp 构造函数中添加正斜杠定界符。

var re = new RegExp("/\* start-" + identifier + " \*/([\s\S]*)/\* end-" + identifier + " \*/");

示例:

> var str = 'some code here\n/* start-rotateControlOptions */\nsome more code here\non multiple\nlines\n/* end-rotateControlOptions */\nsome code here';
> var re = new RegExp("/\* start-" + identifier + " \*/([\s\S]*)/\* end-" + identifier + " \*/\n");
undefined
> console.log(str.replace(re, ''))
some code here
some code here