我有以下输出:
(这里有很多新行)
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板材的推出而普及,
答案 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