1

我需要解析一个 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*>

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

你能帮我修复这个正则表达式吗?

4

2 回答 2

4

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

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

使用您的示例查看现场演示

于 2013-11-13T12:55:35.987 回答
2

使用 jQuery 并解析所有子项。对于每个孩子,您必须检查 .html() 是否为空。如果是 -> 使用 .remove() 删除当前元素(如果需要,也可以删除父元素)。

对每个字符串执行:

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

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

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

于 2013-11-13T10:32:46.070 回答