Javascript替换函数错误

时间:2017-09-20 12:15:51

标签: javascript

我有一个javascript替换功能的问题,我没有成功解决它。

这是我的代码:https://jsfiddle.net/r36k20sa/1/

  var tags = ['zazie', 'johnny'];

  tags.forEach(function(element) {
    content = content.replace(
      new RegExp("(?!<a.*?>.*?)(\\b" + element + "\\b)(?!.*?<\\/a>)", "igm"),
      '<a href="" class="esk-seo-plu-link" style="background:red;color:white">$1</a>'
    );
  });

在tags数组中,如果我反转数组“johnny”,那么“zazie”所有标签都被很好地选中,否则会丢失一些标签。 (本例中的最后一个)。什么可以成功?

有什么可以解释的?好像javascript替换函数是异步运行的?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

当你有一个触手可及的DOM解析器时,你是否正在认真使用正则表达式来处理HTML?

<a href="http://www.test.com" class="abcd/efgh">ABCD</a>

See it in action

答案 1 :(得分:0)

请将.替换为\\.

  var tags = ['zazie', 'johnny'];

  tags.forEach(function(element) {
    content = content.replace(
      new RegExp("(?!<a.*?>\\.*?)(\\b" + element + "\\b)(?!\\.*?<\\/a>)", "igm"),
      '<a href="" class="esk-seo-plu-link" style="background:red;color:white">$1</a>'
    );
  });