Javascript 如何清理空间和新线?

Javascript 如何清理空间和新线?,javascript,regex,Javascript,Regex,我有以下输出: (这里有很多新行) Lorem Ipsum只是印刷和排版的虚拟文本 工业 Lorem Ipsum一直是业界的标准假人 自从16世纪,一个不知名的打印机 一个铅字的厨房,把它翻成一本铅字样本书 (这里有很多新行) 它不仅存活了五个世纪 而且是向电子排版的飞跃 基本保持不变。它被大众化了 在20世纪60年代,随着包含Lorem的Letraset图纸的发布 同侧节段 为了解决这个问题,我使用了很多正则表达式 var body = contentDiv.replace(/ {2,}/g,

我有以下输出:

这里有很多新行

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

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

自从16世纪,一个不知名的打印机

一个铅字的厨房,把它翻成一本铅字样本书

这里有很多新行

它不仅存活了五个世纪

而且是向电子排版的飞跃

基本保持不变。它被大众化了

在20世纪60年代,随着包含Lorem的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
是上面的文本,由
getElementsByTagName
返回

var contentDiv = element.getElementsByTagName("div")[0].textContent;
只是div有很多格式(…),当我调用
textContent
函数时,我确实会得到带有空格和额外新行的文本,通常它应该是这样的:

Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书

它不仅存活了五个世纪,而且还跨越了电子排版, 基本保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表的发行而流行


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

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

asdfasdf 


asdfafd
 sdf  
d
d sa  






 sadfdsaf
进入:

只需修复3+多个换行符

.replace(/(\r?\n){3,}/g,"$1$1");
.replace(/^ *| *$/gm,'');
只需修复前导空格和尾随空格

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

这一款也很管用:)


,也许这有帮助?您的正则表达式不起作用,还是您只是在寻找替代方法?是的,我只是在寻找替代方法,因为我不喜欢那里的替换方法:/n您可以将空格和换行符删除与以下内容结合起来:
.replace(/\s*(\r?\n){2,}\s*/g,$1”)如果这就是你想要的?是的,这就是我想做的:),我会试试的,非常感谢,非常感谢:D@MNS不用担心-最新的更新(答案的底部)也会清理字符串开头和结尾的空格(第一个只清理换行符两边的空格)