0

我有以下输出:

这里有很多新行

Lorem Ipsum 只是印刷和排版行业的虚拟文本。

Lorem Ipsum 一直是业界的标准假人

自 1500 年代以来的文本,当时未知的打印机

一个类型的厨房,并将其争先恐后地制作了一个类型样本书。

这里有很多新行

它不仅存活了五个世纪,

也是电子排版的飞跃,

基本保持不变。它被普及了

在 1960 年代,随着包含 Lorem Ipsum 段落的 Letraset 表的发布,

为了清理这个我使用了很多正则表达式

var body = contentDiv.replace(/ {2,}/g, ' ').replace(/([^\r\n][^\n])(?:\r?\n)([^\r\n][^\n])/g,"$1$2");
$('eBody').value = body.replace(/\n{3,}/g, '\n').replace(/^\s\s*/, '');

上面的文本在哪里contentDiv,由 a 返回getElementsByTagName

var contentDiv = element.getElementsByTagName("div")[0].textContent;

只是 div 有很多格式(...),当我调用该textContent函数时,我确实得到带有空格和额外换行符的文本,通常它应该如下所示:

Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作一本类型样本书。

它不仅经历了五个世纪,而且经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 表的发布而普及,

4

2 回答 2

2

单个正则表达式替换用于删除前导和尾随空格,以及限制连续换行符的数量:

str = str.replace(/(\s*((\r?\n){2,})\s*|\s*((\r?\n){1,2})\s*)/g,"$2$4");

转:

asdfasdf 


asdfafd
 sdf  
d
d sa  






 sadfdsaf

进入:

asdfasdf

asdfafd
sdf
d
d sa

sadfdsaf

只需修复 3+ 多个换行符

.replace(/(\r?\n){3,}/g,"$1$1");

只需修复前导和尾随空格

.replace(/^ *| *$/gm,'');

更新:第一个表达式没有清除字符串开头和结尾的空格

现在什么都做!

.replace(/^\s*|\s*$|(\s*((\r?\n){2,})\s*|\s*((\r?\n){1,2})\s*)/g,"$2$4");
于 2013-09-11T15:04:20.567 回答
0

这个也很好用:)

s/^\s*(?:(\r?\n)(?:[\s^\r\n]+)(.+?))$/\1\2/gm
于 2013-09-11T15:13:01.607 回答