正则表达式删除空html标签,只包含空子

时间:2013-11-13 10:26:34

标签: javascript jquery html regex

我需要解析一个HTML字符串并删除所有只包含空子元素的元素。

示例:

<P ALIGN="left"><FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="1"><B></B></FONT></P>

不包含任何信息,必须替换为</br>

我写了一个这样的正则表达式:

<\w+\b[^>]*>(<\w+\b[^>]*>\s*</\w*\s*>)*</\w*\s*>

但问题是它只捕获了三个中的两个级别。在abobe示例中,未选择<p>元素(最外面的元素)。

你能帮我解决这个正则表达式吗?

2 个答案:

答案 0 :(得分:2)

使用jQuery并解析所有孩子。对于每个孩子,您必须检查.html()是否为空。如果是 - >使用.remove()。

删除当前元素(或者如果需要,删除父元素)

为每个字符串做:

var appended = $('.yourparent').append('YOUR HTML STRING');

appended.children().each(function () 
{
    if(this.html() === '')
    {
        this.parent().remove(); 
    }
});

这将首先添加项目,如果有空子项,则删除。

答案 1 :(得分:2)

这个正则表达式似乎有效:

/(<(?!\/)[^>]+>)+(<\/[^>]+>)+/

使用您的示例查看live demo