使用正则表达式匹配和替换嵌套的html标记

时间:2017-03-22 01:25:58

标签: javascript node.js regex

我想保留<em><strong>标记的嵌套并删除内部嵌套标记。无论如何这可能与正则表达式有关吗?

<strong>Hello <em>World</em></stong>

应该成为

<strong>Hello World</stong>

2 个答案:

答案 0 :(得分:0)

如果只删除<em>内的任何<strong>标记,您可以使用以下javascript代码来获得所需的结果。

(function(){
    var a = document.getElementsByTagName("strong");
    for(var i=0;i<a.length;i++){
      a[i].innerHTML = a[i].innerText; //Removing any innerHTML here.
    }
})();

答案 1 :(得分:0)

因为正则表达式无法识别dom,所以我建议找其他方法,比如使用dom操作函数。

例如,<Strong><strong><sTrong><strong class="a"><strong clAss = ' a'> ...都是有效的dom。你甚至可以省略结束标签或拼错它(就像你的例子!)。你不能用正则表达式处理这一切。

但是,如果你已经准备好了像你的例子一样完美解析的dom,这个正则表达式可能会有用。

// single line only
"<strong>Hello <em>World</em></strong>".replace(/^<strong>(.*)<em>(.*)<\/em>(.*)<\/strong>$/gi, "<strong>$1$2$3</strong>");
>> <strong>Hello World</strong>