使用RegEx删除空标签

bob*_*bby 7 javascript regex

我想删除空标签,例如<label></label>,<font> </font>使:

<label></label><form></form>
<p>This is <span style="color: red;">red</span> 
<i>italic</i>
</p>
Run Code Online (Sandbox Code Playgroud)

将被清理为:

<p>This is <span style="color: red;">red</span> 
<i>italic</i>
</p>
Run Code Online (Sandbox Code Playgroud)

我在javascript中有这个RegEx,但它删除了空标签,但它也删除了这个: "<i>italic</i></p>"

str=str.replace(/<[\S]+><\/[\S]+>/gim, "");
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Mat*_*ell 22

正则表达式不适用于HTML.无论如何,如果你使用JavaScript,我会被鼓励使用jQuery DOM处理.

就像是:

$('*:empty').remove();
Run Code Online (Sandbox Code Playgroud)

或者:

$("*").filter(function() 
{ 
     return $.trim($(this).html()).length > 0; 
}).remove();
Run Code Online (Sandbox Code Playgroud)


por*_*ges 19

你有"不是空格"作为你的角色类,这意味着" <i>italic</i></p>"将匹配.你的正则表达式的前半部分将匹配" <(i>italic</i)>"和下半部分" </(p)>".(我用括号表示每个[\S]+匹配的内容.)

改变这个:

/<[\S]+><\/[\S]+>/
Run Code Online (Sandbox Code Playgroud)

对此:

/<[^\/>][^>]*><\/[^>]+>/
Run Code Online (Sandbox Code Playgroud)

总的来说,你应该真正使用一个合适的HTML处理器,但如果你正在改变HTML汤,这应该足够了:)


Civ*_*iva 8

正则表达式的所有答案都只是验证

<label></label>
Run Code Online (Sandbox Code Playgroud)

但在这种情况下

<label> </label>
<label>    </label>
<label>
</label> 
Run Code Online (Sandbox Code Playgroud)

尝试这种模式来获得以上所有

<[^/>]+>[ \n\r\t]*</[^>]+>
Run Code Online (Sandbox Code Playgroud)