[求助]如何利用正则表达式将文本或换行用 p 标签包裹起来

356 天前
 fgt1t5y

就是像下面这样:

第一行

第二行

转换为

<p>第一行</p>
<p></br></p>
<p>第二行</p>

本人对正则表达式不太了解,特来 V 站问问万能的 V 友们。

不求最优解,有思路就好。

975 次点击
所在节点    正则表达式
9 条回复
Jat001
356 天前
这太简单了吧,先把 \n 替换成 </p>\n<p>,再把<p></p> 替换成 <p></br></p>,要啥正则
fgt1t5y
356 天前
@Jat001 多谢大佬解答 确实可以 不过我更想要正则的解法
sillydaddy
356 天前
如果是用 vscode 的话,
第一遍先替换有文字的:
```
^(.+)$
替换为
<p>$1</p>
```
第二遍替换没有文字的空行:
```
^$
替换为
<p><br/></p>
```

其中,^和$分别是匹配行首和行尾的符号。第一遍里面的$1 表示的是正则表达式里面,第一个括号里面匹配的内容,同理$2 可以递推。
Jat001
356 天前
正则也没办法把两步变成一步,拆成两步是最优解
rimworld
356 天前
```js
const str =
`第一行
第二行`

const list = str.split("\n")
const res = []
for (let i = 0; i < list.length; i++) {
res.push(...[`<p>${list[i].trimStart()}</p>`, "<br></br>"])
}
console.log(res)
```
rimworld
356 天前
@rimworld 必须正则啊,好吧
fgt1t5y
356 天前
@Jat001 可以有多条
fgt1t5y
356 天前
@sillydaddy 谢谢 已采纳
fgt1t5y
356 天前
问题解决 参考方案见 3 楼 :)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX