Javascript中带有动态键的正则表达式

Javascript中带有动态键的正则表达式,javascript,html,regex,Javascript,Html,Regex,我有一个对象,在我的HTML中,我使用[itemkey]形式的标记来引用该对象的itemkey属性的值,并希望用它们的值替换这些标记。我的JavaScript代码如下所示: _.forEach(objectItem,function(val,key){ var re = new RegExp('\[' + key +'\]','g'); htmlDump = htmlDump.replace(re,val) }); 但它不起作用。怎么了 无论您对HTML进行何种操作,在替换文档的HTM

我有一个对象,在我的HTML中,我使用
[itemkey]
形式的标记来引用该对象的
itemkey
属性的值,并希望用它们的值替换这些标记。我的JavaScript代码如下所示:

_.forEach(objectItem,function(val,key){
  var re = new RegExp('\[' + key +'\]','g');
  htmlDump = htmlDump.replace(re,val)
});

但它不起作用。怎么了

无论您对HTML进行何种操作,在替换文档的HTML之前,您所做的任何操作都不会产生任何效果

除此之外,没有逻辑上的理由说明@Tushar在第一条评论中给出的方法不起作用(除了它需要一个
g
标志):

总的来说,这种方法是有缺陷的。您正在替换整个HTML;例如,这将清除所有事件侦听器。相反,您应该迭代DOM并将转换应用于每个文本节点


请注意,理想情况下,您应该转义
,以避免其中与regexp相关的字符破坏regexp。

您需要对
regexp
构造函数中的特殊字符进行双重转义。使用
newregexp('\\['+key+'\\]')
我试过了,但没有再起作用。
key
是否包含任何特殊字符?为什么不干脆
new RegExp(key)
我想,问题在于变量
htmlDump
的值在下一次迭代中被替换。
new RegExp('\\[' + key + '\\]', 'g');