处理这个正则表达式中的空格

时间:2017-06-13 12:33:35

标签: javascript regex

这个正则表达式

var reg = <font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*)<\/font>

用于替换(reg,&#39;&#39;)以删除空字体标记。它删除了这个

<font size="3"></font>

行。

如何修改它以便删除

<font size="3"> </font>

<font size="3">&nbsp;</font>

<font size="3">    </font>

我希望能够找到标签之间有任意数量空格的所有空字体标签,并替换为空字符串。

2 个答案:

答案 0 :(得分:0)

试试这个

<font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*|(&nbsp;)+)<\/font>

根据你的正则表达式。它已经占据了空间。我刚刚添加了

regex101链接:https://regex101.com/r/4Msyv1/2

答案 1 :(得分:0)

如果您要做的只是找到标签之间有任意数量空格的所有空字体标签,并用空字符串替换,您可以稍微简化正则表达式。如果您已经使用当前的正则表达式进行了指示,那么您还需要在其中捕获一层空标记,您可以执行以下操作:

var reg = /<font[^>]*>(?:\s|&nbsp;|<(\w+)>(?:\s|&nbsp;)*<\/\1>)*<\/font>/gi

var testStr = `<font size="3"></font>
<font size="3"> </font>
<font size="3">&nbsp;</font>
<font size="3">&nbsp;&nbsp;&nbsp; </font>
<font size="3">    </font>
<font size="3"><something>&nbsp;&nbsp;</something></font>`

console.log(testStr.replace(reg, ""))