Javascript 是否删除RegExp末尾的额外空白?
我正在使用此代码缩进一块文本。它工作得很好,但它在结尾添加了空白Javascript 是否删除RegExp末尾的额外空白?,javascript,regex,actionscript-3,Javascript,Regex,Actionscript 3,我正在使用此代码缩进一块文本。它工作得很好,但它在结尾添加了空白 public var indentPattern:RegExp = /([\t ]*)(.*)$/gm; public function indent(input:String, indentAmount:String = "\t"):String { if (input==null || input=="") return indentAmount; var indentedText:String = inpu
public var indentPattern:RegExp = /([\t ]*)(.*)$/gm;
public function indent(input:String, indentAmount:String = "\t"):String {
if (input==null || input=="") return indentAmount;
var indentedText:String = input.replace(indentPattern, indentAmount + "$1$2");
return indentedText;
}
测试输入数据:
<style type="text/css">
html, body {
height:100%;
margin:0;
padding:0;
line-height:.8;
}
*, *:before, *:after {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
</style>
实际产量:
<style type="text/css">
html, body {
height:100%;
margin:0;
padding:0;
line-height:.8;
}
*, *:before, *:after {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
</style>
注意:当我说结尾处的空格时,制表符添加在分号后的行末尾。试着突出显示页面上的文本,看看我在说什么 如果其他一切就绪,请在返回之前尝试移除它们:
indentedText = indentedText.replace(/\s+$/g, '');
问题是
([\t ]*)(.*)$
可以匹配空字符串。因此,在行尾匹配一个空字符串,并将indentAmount放在那里。将其更改为:
([\t ]*)(.+)$
或者让比赛从每行的开头开始:
^([\t ]*)(.*)$
我认为这里更合适的正则表达式应该是indentedText=indentedText.replace/[\t]+$/gm;