Javascript 正则表达式-右/左修剪+;将中间的多个空间减少到一个+;在开始和结束时删除线路中断;结束,包括减少到两个(如果在中间和中间)&燃气轮机;2.
我需要右/左修剪一个字符串,减少中间的多个空间到一个…但不包括换行符。这就是我尝试的:Javascript 正则表达式-右/左修剪+;将中间的多个空间减少到一个+;在开始和结束时删除线路中断;结束,包括减少到两个(如果在中间和中间)&燃气轮机;2.,javascript,regex,Javascript,Regex,我需要右/左修剪一个字符串,减少中间的多个空间到一个…但不包括换行符。这就是我尝试的: var trimMessageTest = varMessageTest.replace(/^\s+|\s+$/g,''); // Trim whitespace left & right var newMessageTest = trimMessageTest.replace(/(?:(?!\n\r)\s\s+)/g,' '); // Reduce whitespace and excl
var trimMessageTest = varMessageTest.replace(/^\s+|\s+$/g,''); // Trim whitespace left & right
var newMessageTest = trimMessageTest.replace(/(?:(?!\n\r)\s\s+)/g,' '); // Reduce whitespace and exclude line break
//var newMessageTest = trimMessageTest.replace(/\s\s+/g,' '); // Reduce whitespace
console.log(newMessageTest);
作为最后一步,删除开头和结尾的换行符。。。如果>2,则减少多行中断。。。要创建两个这样的换行符:
var lastMessageTest = newMessageTest.replace(/((?:\r\n?|\n)+)$|(?:\r\n?|\n){2,}/g, function ($0,$1) {
return $1 ? '' : '\n\n';
});
console.log(newMessageTest);
满足此要求的最佳方法是什么?我将使用一个简单的函数:
function cleanupText(text) {
return text && text // Ensure text exists
.trim() // Trim left and right spaces
.replace(/\n{2,}/g, '\n\n') // Replace 2+ linebreaks with 2 ones
.replace(/ +/g, ' '); // Replace consecutive spaces with one
}
片段
使用与ECMAScript 6(ES6)兼容的浏览器(非IE)以代码形式运行代码段,代码使用由反勾号分隔:
“严格使用”;
函数cleanupText(文本){
返回文本&&text//确保文本存在
.trim()//修剪左右空格
.replace(//\n{2,}/g,'\n\n')//用2个换行符替换2个以上的换行符
.replace(//+/g',);//用一个空格替换连续的空格
}
常量样本文本=`
Lorem Ipsum只是印刷和排版行业的虚拟文本。
自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书。
它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表的发行而流行,
最近,像Aldus PageMaker这样的桌面发布软件包括Lorem Ipsum版本。
`;
//清除文本
log(cleanupText(sampleText))代码>我将使用一个简单的函数:
function cleanupText(text) {
return text && text // Ensure text exists
.trim() // Trim left and right spaces
.replace(/\n{2,}/g, '\n\n') // Replace 2+ linebreaks with 2 ones
.replace(/ +/g, ' '); // Replace consecutive spaces with one
}
片段
使用与ECMAScript 6(ES6)兼容的浏览器(非IE)以代码形式运行代码段,代码使用由反勾号分隔:
“严格使用”;
函数cleanupText(文本){
返回文本&&text//确保文本存在
.trim()//修剪左右空格
.replace(//\n{2,}/g,'\n\n')//用2个换行符替换2个以上的换行符
.replace(//+/g',);//用一个空格替换连续的空格
}
常量样本文本=`
Lorem Ipsum只是印刷和排版行业的虚拟文本。
自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书。
它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表的发行而流行,
最近,像Aldus PageMaker这样的桌面发布软件包括Lorem Ipsum版本。
`;
//清除文本
log(cleanupText(sampleText))代码>以下是一种可能的解决方案
var str=document.getElementById(“ta”).value;
函数cleanupText(文本){
///^(?:\s)+|[\s+]$/g
var str=“”;
文本
//向左修剪空白<开始字符串
.replace(/^\s+/,“”)
//记下每一行
.match(/[^\r\n | ^\r | ^\n]+/g).filter(函数(字符串){
str+=字符串
//向左和向右修剪空白<每行
.trim()
//将连续空格替换为一个空格
.替换(/\s+/g,“”)
//替换为“单个选项卡>以计数端点特征线”
+“\t”;
});
//仅最后一个选项卡>计数结束特征线
var two=str.match(/\t+$/g)[0].match(/\t/g);
//是的!
返回str.replace(/\t+/g,“\n”)+(两个长度>1?”\n\n:“);
}
log(cleanupText(str))代码>
sdgfghfd gdfghdf
fdghdf
sdgfghfd gdfghdf
fdghf
以下是一种可能的解决方案
var str=document.getElementById(“ta”).value;
函数cleanupText(文本){
///^(?:\s)+|[\s+]$/g
var str=“”;
文本
//向左修剪空白<开始字符串
.replace(/^\s+/,“”)
//记下每一行
.match(/[^\r\n | ^\r | ^\n]+/g).filter(函数(字符串){
str+=字符串
//向左和向右修剪空白<每行
.trim()
//将连续空格替换为一个空格
.替换(/\s+/g,“”)
//替换为“单个选项卡>以计数端点特征线”
+“\t”;
});
//仅最后一个选项卡>计数结束特征线
var two=str.match(/\t+$/g)[0].match(/\t/g);
//是的!
返回str.replace(/\t+/g,“\n”)+(两个长度>1?”\n\n:“);
}
log(cleanupText(str))代码>
sdgfghfd gdfghdf
fdghdf
sdgfghfd gdfghdf
fdghf
匹配水平空白的构造是[^\S\r\n]
。尝试用它替换所有的\s
。我尝试了这个。替换(/^[^\s\r\n]/g',);或.替换(/[^\S\r\n]/g',);对于第二个替换,但它不起作用…您是否意识到第一步.replace(/^\s+\s+$/g',)
已经删除了所有前导/尾随换行符?不,它只修剪了左右空格。。。/gm会,但不是/g。那么为什么要使用.replace(/^\s+\s+$/g')
?使用trim()
。匹配水平空白的构造是[^\S\r\n]
。尝试用它替换所有的\s
。我尝试了这个。替换(/^[^\s\r\n]/g',);或.替换(/[^\S\r\n]/g',);对于第二个替换,但它不起作用…您是否意识到第一步.replace(/^\s+\s+$/g',)
已经删除了所有前导/尾随换行符?不,它只修剪了左右空格。。。/gm会,但不是/g。那么为什么要使用.replace(/^\s+\s+$/g')
?使用trim()
。