我该如何清理空间和新线?

时间:2013-09-11 14:32:51

标签: javascript regex

我有以下输出:

  

这里有很多新行

     

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

     

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

     自16世纪以来的

文本,当时一台未知的打印机

     

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

     

这里有很多新行

     

它不仅存活了五个世纪,

     

也是电子排版的一次飞跃,

     

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

     在20世纪60年代发布了包含Lorem的Letraset纸张   Ipsum段落,

要清理它,我使用了很多正则表达式

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是上述文字,由getElementsByTagName返回。

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

只是div有很多格式化(...),当我调用textContent函数时,我确实得到带有空格和额外新行的文本,通常它应该是这样的:

  

Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是业界标准的虚拟文本,当时一台未知的打印机采用了类型的厨房,并将其拼凑成一本类型的样本书。

     

它不仅存活了五个世纪,而且还延伸到电子排版领域,   基本保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset板材的推出而普及,

2 个答案:

答案 0 :(得分:1)

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

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");

答案 1 :(得分:0)

这个也很棒:)

s/^\s*(?:(\r?\n)(?:[\s^\r\n]+)(.+?))$/\1\2/gm