关于正则表达式:如何使用javascript格式化输入框中的价格值?

how Format price value in inputbox using javascript?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How can I format numbers as money in JavaScript?

我在一个网站上工作,它有一个价格输入框。我需要格式化价格值,如下所示。

1
if a user enter"1000000" it should replace with"1,000,000" is it possible?

有什么帮助吗?


您需要这样的自定义功能:

1
2
3
4
5
6
7
8
9
10
11
12
function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}


对《太极拳》的一个小小修改。因为如果用户输入1000000,它将产生1000000。但如果用户使用退格键删除"0",它将不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function addPriceFormat()
{
    var numb='';
    nStr = document.getElementById('txt').value;
    my = nStr.split(',');
    var Len = my.length;
    for (var i=0; i<Len;i++){numb = numb+my[i];}
    x = numb.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;

    while (rgx.test(x1))
    {
       x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    formated = x1 + x2;
    document.getElementById('txt').value = formated;
}


您可以执行以下操作:

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

演示:http://jsfiddle.net/e9aek/