将特定文本替换为html

时间:2016-12-07 22:13:01

标签: javascript jquery

如何将特定文本替换或更改为新的HTML?

旧HTML:

<div id="test">    
    <p>
        [b] lorem ipsum [/b]
    </p>
    <p>
        [textarea] lorem ipsum [/textarea] 
    </p>
</div>

新HTML:

<div id="test">
    <p>
        <b>lorem ipsum</b>
    </p>
    <p>
        <textarea>lorem ipsum</textarea>
    </p>
</div>
Force_Tag = [
    '[b]','<pre>',
    '[/b]','</b>',
    '[textarea]','<textarea>',
    '[/textarea]','</textarea>',
    // ...
]

1 个答案:

答案 0 :(得分:1)

您可以String.prototype.replace()使用RegExp /(\[)|(\])/g来捕获"[""]",将第一个捕获组替换为"<",第二个捕获组使用">",将.innerHTML元素设置为替换字符串

<div id="test">
  <p>
    [b] lorem ipsum [/b]
  </p>
  <p>
    [textarea] lorem ipsum [/textarea]
  </p>
</div>
<script>
  for (let p of document.querySelectorAll("#test p")) {
    p.innerHTML = p.innerHTML.replace(/(\[)|(\])/g, function(match, p1, p2) {
      if (p1) return "<";
      if (p2) return ">"
    })
  }
  </script>