用变量替换括号之间的字符串

时间:2019-06-14 15:15:52

标签: javascript regex replace

我想在字符串中替换字符(用变量),这是我的示例:

var oldId = 5;
var newId = 6; 
var content = 'text tes_5 as name[5] end';
content = content.replace(new RegExp('name\['+oldId+'\]', 'g'), 'name['+newId+']');

为什么结果是text tes_5 as name[5] end

2 个答案:

答案 0 :(得分:9)

使用正则表达式构造函数时,请进行两次转义:

var oldId = 5;
var newId = 6; 
var content = 'text tes_5 as name[5] end';
content = content.replace(new RegExp('name\\['+oldId+'\\]', 'g'), 'name['+newId+']');
console.log(content);

答案 1 :(得分:2)

您需要转义反斜杠,因为反斜杠是字符串文字和正则表达式的转义字符。

var oldId = 5;
var newId = 6; 
var content = 'text tes_5 as name[5] end';
content = content.replace(new RegExp('name\\['+oldId+'\\]', 'g'), 'name['+newId+']');
console.log(content);

在ES6中,您可以使用带有String.raw标签的模板文字。这样一来,它就无法处理文字内部的转义序列。

var oldId = 5;
var newId = 6; 
var content = 'text tes_5 as name[5] end';
content = content.replace(new RegExp(String.raw`name\[${oldId}\]`, 'g'), 'name['+newId+']');
console.log(content);