在RegExp结束时删除多余的空格?

时间:2016-01-13 08:42:17

标签: 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 = 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>        

注意:当我说分号后面的行末尾添加了空白区域的空格。尝试突出显示页面上的文字,看看我在说什么。

2 个答案:

答案 0 :(得分:3)

问题在于

([\t ]*)(.*)$

可以匹配空字符串。因此,在行的末尾匹配一个空字符串,并在那里放置indentAmount。将其更改为:

([\t ]*)(.+)$

See it in action

或者从每行的开头开始匹配:

^([\t ]*)(.*)$

See it in action

答案 1 :(得分:1)

如果其他所有内容都已到位,请在返回之前尝试删除它们:

indentedText = indentedText.replace(/\s+$/g, '');