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
我在名为 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