rr.*_*rr. 8 javascript regex string
我正在处理的应用程序让用户以明文形式输入内容,稍后将以HTML格式显示.为了尽可能好地显示用户的内容,我们将内容转换如下:
由两个或多个新行字符分隔的任何文本块都包含在<p>标记中.剥离出新的行字符(以及其间的任何空格).
任何单个新行字符(以及周围的空格)都将替换为<br />标记.
我目前通过将文本放在两个正则表达式替换中来实现这一点,但是想知道它是否可以合并为一个.这就是我现在所拥有的(JavaScript):
// content holds the text to process
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace(/\n/g, '<br />') + '</p>';
Run Code Online (Sandbox Code Playgroud)
Vad*_*zim 10
有两种不同的替换字符串.因此,单个替换呼叫是不可能的.
但第二个replace()可以更改为更有效的纯字符串替换.
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace('\n', '<br />') + '</p>';
Run Code Online (Sandbox Code Playgroud)
所以,有单一的正则表达式.:)
更新
Javascript诈唬了我.字符串replace只处理第一次出现.
还有一些可能的解决方法实现replaceAll.
我面临着类似的要求 - 将 wpautop 功能模仿到 javascript 中(用于主题定制器)。
所以这是我解决问题的方法:
首先,当有两个换行符时更换外壳。
to = to.replace(/\n{2}/g, ' </p><p>');
Run Code Online (Sandbox Code Playgroud)
然后,当只剩下一个换行符时更换外壳。
to = to.replace(/\n/g, ' <br />');
Run Code Online (Sandbox Code Playgroud)
最后将整个内容包裹在一个 <p> 标签中
to = '<p>' + to + '</p>';
Run Code Online (Sandbox Code Playgroud)
我使用了 因为我的样式暗示了段落后的边距。如果你不需要它们,你可以省略它们。此外,一个缺点是在下一段的开头插入了单个换行符,但这是我可以接受的。