如何用JS正则实现换行转<p>标签、双换行转含<br>的<p>标签
解决方案
你可以分两步处理文本,先给每一行(包括空行)包裹<p>标签,再把空的<p></p>替换成<p><br /></p>,就能满足需求:
function textToHtml(text) { // 给每一行(含空行)包裹<p>标签,m开启多行模式让^/$匹配每行首尾 text = text.replace(/^.*$/gm, '<p>$&</p>'); // 将空内容的<p>标签替换为带换行的目标标签 text = text.replace(/<p><\/p>/g, '<p><br /></p>'); return text; }
测试验证
调用textToHtml('Hello World\n\nFoo Bar\nBas Baz')会返回:
<p>Hello World</p> <p><br /></p> <p>Foo Bar</p> <p>Bas Baz</p>
思路说明
- 正则
/^.*$/gm的m是多行模式,让^和$能匹配每一行的首尾,.*匹配该行所有内容(包括空行),$&指代匹配到的整行内容,实现每行的<p>包裹。 - 原文本中的双换行
\n\n会被第一步处理成空行对应的<p></p>,第二步将这个空标签替换成需求的<p><br /></p>即可。
内容的提问来源于stack exchange,提问作者Taylor Foster
相关产品推荐
相关产品推荐

