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;