使用Regular-Expression删除HTML块

时间:2014-10-08 12:02:25

标签: regex

我尝试删除所有已关闭的HTML块。 我是说,例如以下块将被删除,因为它已关闭<> ... </>

<b> some text </b>

但如果它没有关闭(它缺少</>),那么它就不会被删除。 以下是要处理的HTML代码片段:

<div id="MyDiv">div,
  <strong>
    <span>span2, </span>                    <-- This is to delete
        <em> Some text for em
        <div> Some text for div </div>      <-- This is to delete
          <p><b>b,  <span id="MySpan"> Some text for span ... 

处理后,它应如下所示:

<div id="MyDiv">div,
  <strong>
        <em> Some text for em
          <p><b>b,  <span id="MySpan">span1,

我需要一个正则表达式语句才能完成它。例如。如下:

var sHTML = $('#MyDiv').html();
sHTML = sHTML.replace(/^<.*>.*?<\/.*>/ig, '');

提前致谢。

3 个答案:

答案 0 :(得分:1)

<([^>]*)>[^><]*<\/\s*\1\s*>|<(\w+)\s+[^>]*>[^><]*<\/\s*\2\s*>

试试这个。替换为``。

参见演示。

http://regex101.com/r/hQ1rP0/79

答案 1 :(得分:0)

Nvm这适用于每个案例,或者我很确定它应该

(<[^>]*>[^<]*<[^>]*>)

答案 2 :(得分:0)

假设你的html位于一个名为test.html的文件中,这里有一个perl one-liner:

perl -pi -e 's/<.*>.*<\/.*>//g' test.html