在javascript中使用两个/三个位置的货币后添加逗号

时间:2013-11-01 12:16:15

标签: javascript php html css

我想根据货币值在第3或第2位添加逗号到我的货币值: 输出应该是这样的:

1000 => 1000
10000 => 10,000
210000 => 2,10,000
2010000 => 20,10,000
12010000 => 1,20,10,000

我正在使用Numeral.js插件进行转换。但插件只在3位数后添加逗号。输出如下:

输入200000000

200,000,000

这是我正在使用的代码。

<script type="text/javascript">
        $(window).load(function() {
            $('.currency').keyup(function(event){
             if(event.which >= 37 && event.which <= 40){
                event.preventDefault();
             }
             var $this = $(this);
             var num = $this.val();
             var num2 = numeral(num).format('0,0[.]00');
             console.log(num2);
             $this.val(num2);
            });
        });
</script>

我不介意正则表达式,但我找不到任何可以做到这一点。

4 个答案:

答案 0 :(得分:0)

function numberWithCommas(x) 
{
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    return parts.join(".");
}

试试这个......

答案 1 :(得分:0)

使用while循环中的字符串操作

var intPart = '12010000',
    i = intPart.length - 3,
    str = intPart.slice(-3);
if (i > 0) {
    while ((i-=2)>=0) {
        str = intPart.slice(i, i+2) + ',' + str;
    }
    if (i === -1) str = intPart.slice(0, 1) + ',' + str;
}
str; // "1,20,10,000"

答案 2 :(得分:0)

使用上面的代码尝试此更改

function numberWithCommas(x) 
{
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/^(\d*)(\d\d)(\d\d\d$|\d\d\.)/g, "$1$2,$3");
    return parts.join(".");
}

答案 3 :(得分:0)

这是一个解决方案,

最多可以处理9位jsfiddle sample

function numberWithCommas(x) {
    var res = [], nr;
    x = x.split("").reverse().join("");
    nr = x.match(/[0-9]{1,3}/g);
    console.log("first split" , nr);
    if (x.length < 4) {return nr[0].split("").reverse().join('');}
    else if (x.length < 9) {
        res.push( nr.shift() );//last three digits
        //join and split the remainder at 2 digits

        nr = nr.join('').match(/[0-9]{1,2}/g);

        res = res.concat(nr);
        console.log(res);
        return res.join(',').split("").reverse().join("");
    } else {
        return nr.join(',').split("").reverse().join('');
    }
}
function handleInput(evt) {
    $('#result').text( numberWithCommas( $('#input').val() ));
}
$('#input').keyup(handleInput);