我需要从正在粘贴到html文本区域中的字符串中删除空段落。我将此作为正则表达式来执行此操作。
var reg = /<p( [a-zA-Z]*=(("[^"]*")|('[^']*')))*></p>/g;
它工作正常。但是,粘贴的某些数据包含如下所示的段落。
<p><b></b></p>
所以正则表达式不起作用 - 因为该段落虽然不包含实际文本,但确实包含 html 标签。
谁能告诉我现在修改我的正则表达式,以便它不仅会用空字符串替换没有内容的段落,而且还会替换唯一内容是 html 标签的段落。
此刻的文字是这样的。
<p style="margin:0px;"></p>
<p>Fred</p>
<p style="margin-left:10px;"></p>
<p><b></b></p>
<p>Jim</p>
正在被修改,因此它随后变为
<p>Fred></p>
<p><b></b></p>
<p>Jim</p>
我需要它成为
<p>Fred</p>
<p>Jim</p>
你可以试试这个:
<p[^>]*>(?:s*<(w+)>s*</1>s*|s*)</p>
并替换为空
正则表达式演示
const regex = /<p[^>]*>(?:s*<(w+)>s*</1>s*|s*)</p>/g;
const str = `<p style="margin:0px;"></p>
<p>Fred</p>
<p style="margin-left:10px;"></p>
<p><b></b></p>
<p>Jim</p>`;
const subst = ``;
const result = str.replace(regex, subst);
console.log(result);