使用正则表达式使用减号格式化货币

时间:2014-08-27 10:23:20

标签: javascript jquery regex

我有一个简单的函数,它将字符串格式化为货币 - 它每隔3个字符添加一次空格:

function addSpace(n) {
    var rx = /(\d+)(\d{3})/;
    return String(n).replace(/^\d+/, function (w) {
        while (rx.test(w)) {
            w = w.replace(rx, '$1 $2');
        }
        return w;
    });
}

所以当我像这样使用它时:

addSpace("1234567.89")

我明白了:

"1 234 567.89"

但我不能为负数得到相同的行为。

我想-1 234 567.89

获得addSpace("-1234567.89")

我应该如何更改功能以获得该结果?我尝试在rx开头添加-?,但这没有帮助。

我知道我可以在字符串中搜索-,如果找到则将其添加到开头,但我想避免这种情况。

2 个答案:

答案 0 :(得分:2)

只需将正则表达式修改为:

/^-?\d+/

输出:

"-1 234 567.89"

Demo

答案 1 :(得分:1)

-作为可选参数传递,使用/^-?\d+/作为RegEX

return String(n).replace(/^-?\d+/, function (w) {
    while (rx.test(w)) {
        w = w.replace(rx, '$1 $2');
    }
    return w;
});

DEMO