【问题标题】:Regex with dynamic keys in JavascriptJavascript中带有动态键的正则表达式
【发布时间】:2015-12-27 13:23:53
【问题描述】:

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

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

但它不起作用。怎么了?

【问题讨论】:

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

标签: javascript html regex


【解决方案1】:

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

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

new RegExp('\\[' + key + '\\]', 'g');

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多