[英]Converting new lines to paragraph/br HTML tags, can this be a single regex?
我正在处理的应用程序让用户以明文形式输入内容,稍后将以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>';
有两种不同的替换字符串。 因此,单个替换呼叫是不可能的。
但第二个replace()可以更改为更有效的纯字符串替换。
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace('\n', '<br />') + '</p>';
所以,有单一的正则表达式。 :)
更新
Javascript诈唬了我。 字符串replace
句柄仅出现第一次。
还给出了replaceAll
几种可能的解决方法实现。
我面临着类似的要求 - 将wpautop功能模仿为javascript(用于主题定制器)。
所以这是我解决问题的方法:
首先,在有两个换行符时更换外壳。
to = to.replace(/\n{2}/g, ' </p><p>');
然后,在只剩下一个换行符时替换大小写。
to = to.replace(/\n/g, ' <br />');
最后将整个内容包装在<p>标签中
to = '<p>' + to + '</p>';
我用了&nbsp; 因为我的造型暗示了段落后的边距。 如果您不需要它们,可以省略它们。 另外,一个缺点是单行换行插入到下一段的开头,但这是我可以忍受的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.