繁体   English   中英

替换javascript中重复的html-tags

[英]replace repeating html-tags in javascript

我正在使用quill.js编辑器来允许用户编写评论。 quill.js的问题是,如果他们按Enter键,则会生成一个新的参数。

<p><br></p>

这使他们可以创建无限的新行。 例如输入:

fffff ffff fff
fff


fffffff



ff

将生成此html:

<p>fffff ffff fff</p>
<p>fff</p>
<p><br></p>
<p><br></p>
<p>fffffff</p>
<p><br></p>
<p><br></p>
<p><br></p>
<p>ff</p>

但我想得到这样的结果:

<p>fffff ffff fff</p>
<p>fff</p>
<p><br></p>
<p>fffffff</p>
<p><br></p>
<p>ff</p>

因此,如果重复换行代码,则应将其替换为一行新行。 我该怎么做呢?

如果您确实没有其他选择,则可以执行以下操作:

 function cleanupHtml() { document.body.innerHTML = document.body.innerHTML.replace(/<p><br><\\/p>/gi, ''); } document.addEventListener('DOMContentLoaded', cleanupHtml); 
 <p>fffff ffff fff</p> <p>fff</p> <p><br></p> <p><br></p> <p>fffffff</p> <p><br></p> <p><br></p> <p><br></p> <p>ff</p> 

您可以检查是否出现了两次或多次<p><br></p>后接新行;如果是,则用一个新行替换它,如下所示:

 const markup = ` <p>fffff ffff fff</p> <p>fff</p> <p><br></p> <p><br></p> <p>fffffff</p> <p><br></p> <p><br></p> <p><br></p> <p>ff</p> <p><br></p> `; const result = markup.replace(/(<p><br><\\/p>\\n){2,}/g, '<p><br><\\/p>\\n'); console.log(result); 

您甚至可以:

 const markup = ` <p>fffff ffff fff</p> <p>fff</p> <p><br></p> <p><br></p> <p>fffffff</p> <p><br></p> <p><br></p> <p><br></p> <p>ff</p> <p><br></p> `; const target = '<p><br><\\/p>\\n'; const result = markup.replace(new RegExp(`(${target}){2,}`, 'g'), target); console.log(result); 

因此,您将来可以轻松更改元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM