我正在开发的一个应用程序让用户以明文形式输入内容,这些内容稍后将显示为 HTML。为了让用户的内容尽可能的好看,我们对内容进行如下改造:
由两个或多个换行符分隔的任何文本 block 都包含在
标记中。新行字符(以及中间的任何空格)被删除。
任何单个换行符(以及周围的空格)都被
标记替换。
我目前通过将文本放入两个正则表达式替换来实现这一点,但想知道是否可以将其合并为一个。这是我现在拥有的 (JavaScript):
// content holds the text to process
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace(/\n/g, '<br />') + '</p>';
最佳答案
有两种不同的替换字符串。所以不可能在单个替换调用中完成。
但是第二个 replace() 可以更改为更有效的纯字符串替换。
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace('\n', '<br />') + '</p>';
所以,只有一个正则表达式。 :)
更新
Javascript 骗了我。字符串 replace
只处理第一次出现。
所以你必须使用现代 replaceAll
函数
或者回到第二个正则表达式
.replace(/\n/g, '<br />') + '</p>';
或者为旧版浏览器使用 String replaceAll
polyfill。
关于javascript - 将新行转换为段落/br HTML 标记,这可以是单个正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579093/