Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式-右/左修剪+;将中间的多个空间减少到一个+;在开始和结束时删除线路中断;结束,包括减少到两个(如果在中间和中间)&燃气轮机;2._Javascript_Regex - Fatal编程技术网

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()