替换段落标签之间的任何内容(如果它是 html 标签)



我需要从正在粘贴到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);

最新更新