javascript - 将新行转换为段落/br HTML 标记,这可以是单个正则表达式吗?

标签 javascript regex string

我正在开发的一个应用程序让用户以明文形式输入内容,这些内容稍后将显示为 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/

相关文章:

javascript - 删除并重定向到同一页面

javascript - Bootstrap 3 的就地文本编辑组件

c - 为什么我不能得到整个字符串的长度?

python - 如何在 Python 中连接单个引号

javascript - METEOR - 将数据从父模板传递到子模板

javascript - 仅滑动图像 css3 或需要 javascript?

python - 正则表达式,更好的方法

java - 未打印非 ASCII 值符号

python - 使用正则表达式查找第二个可能的搜索组

c - 在 C 中使用多字符定界符拆分 char 字符串