我现在有一段HTML源码, 我要将其中的空白段落<p>(也可能为<p style="..." class="...">这种形式), 如果<p>标签中只包含 <br>、 、空字符串(包括圆角空格)和空白段落,则将这个空白段落给删除, 请问这个正则表达式怎么写?
我现在写了一个这样的:var re = new RegExp("(<p>|<p\\s.*?>)(\\s| | |<br\\s*/?>)*</p>","ig");
htmlValue = htmlValue.replace(/\n/g,"").replace(/<p\/>|<p\s.*?\/>/ig,"").replace(re,"");这个正则表达式只能去掉没有嵌套其他空白段落的空白段落, 如<p> <br> <br></p>,
如果有一个这样的空白段落:
<p id="p1"><br> <p id="p2"> <br> </p> </p>
对于这样的只会去年最里层的空白段落, 在此即为 p2, 我希望能直接将 p1去年, 这个正则式怎么写啊?
我现在写了一个这样的:var re = new RegExp("(<p>|<p\\s.*?>)(\\s| | |<br\\s*/?>)*</p>","ig");
htmlValue = htmlValue.replace(/\n/g,"").replace(/<p\/>|<p\s.*?\/>/ig,"").replace(re,"");这个正则表达式只能去掉没有嵌套其他空白段落的空白段落, 如<p> <br> <br></p>,
如果有一个这样的空白段落:
<p id="p1"><br> <p id="p2"> <br> </p> </p>
对于这样的只会去年最里层的空白段落, 在此即为 p2, 我希望能直接将 p1去年, 这个正则式怎么写啊?
while(re.test(htmlValue)){
htmlValue = htmlValue.replace(/\n/g,"").replace(/<p\/>|<p\s.*?\/>/ig,"").replace(re,"");
}
<p id="p1"> <br> <p id="p2"> <br> </p> </p>
红色部分匹配了
<script>
var htmlValue = '<p id="p1"> <br> <p id="p2"> <br> </p> </p>';
htmlValue = htmlValue.replace(/\n/g,"").replace(/<p\/>|<p\s.*?\/>/ig,"");
while(true){
var re = new RegExp("(<p>|<p\\b[^>]*>)( | | |<br\\b[^>]*>)*</p>","ig");
if(re.test(htmlValue))
htmlValue = htmlValue.replace(re,"");
else
break;
}
alert(htmlValue);
</script>