每隔三位数字为数字添加逗号

Ste*_*eve 149 jquery number-formatting

如何使用jQuery使用逗号分隔符每三位数格式化数字?

例如:

???????????????????????????
?   Input   ?   Output    ?
???????????????????????????
?       298 ?         298 ?
?      2984 ?       2,984 ?
? 297312984 ? 297,312,984 ?
???????????????????????????
Run Code Online (Sandbox Code Playgroud)

Dou*_*ner 229

@Paul Creasey有最简单的解决方案作为正则表达式,但这里它是一个简单的jQuery插件:

$.fn.digits = function(){ 
    return this.each(function(){ 
        $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
    })
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

$("span.numbers").digits();
Run Code Online (Sandbox Code Playgroud)

  • 最快的方法是`number.toLocaleString("en");` (56认同)
  • 为输入字段做了一个微小的mod:`$ .fn.digits = function(){return this.each(function(){$(this).val($(this).val().replace(/(\ d )(?=(\ d\d\d)+(?!\ d))/ g,"$ 1,"));})}` (5认同)
  • 完美的工作!感谢Paul Creasey提供简单,优雅的代码,感谢Doug Neiner将其用于插件格式.归功于两者. (4认同)
  • RC @Mark Byers语法是对的.'999.9999'.replace(/(\ d)(?=(\ d\d\d)+(?!\ d))/ g,"$ 1,")但是返回'999.9,999'. (4认同)
  • 我认为这更适合于jQuery名称间隔的实用程序样式函数,例如`$ .digits = function(){...};`. (3认同)

小智 80

你可以使用Number.toLocaleString():

var number = 1557564534;
document.body.innerHTML = number.toLocaleString();
// 1,557,564,534
Run Code Online (Sandbox Code Playgroud)


Pau*_*sey 75

如果你正在使用正则表达式,那就是这样的东西,不确定替换的确切语法!

MyNumberAsString.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
Run Code Online (Sandbox Code Playgroud)

  • 语法是对的.'999.9999'.replace(/(\ d)(?=(\ d\d\d)+(?!\ d))/ g,"$ 1,")但是返回'999.9,999'. (2认同)

Mar*_*ers 27

你可以试试NumberFormatter.

$(this).format({format:"#,###.00", locale:"us"});
Run Code Online (Sandbox Code Playgroud)

它还支持不同的语言环境,当然包括US.

以下是如何使用它的一个非常简单的示例:

<html>
    <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="jquery.numberformatter.js"></script>
        <script>
        $(document).ready(function() {
            $(".numbers").each(function() {
                $(this).format({format:"#,###", locale:"us"});
            });
        });
        </script>
    </head>
    <body>
        <div class="numbers">1000</div>
        <div class="numbers">2000000</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

输出:

1,000
2,000,000
Run Code Online (Sandbox Code Playgroud)


Ray*_*Ray 21

这不是jQuery,但它适用于我.取自本网站.

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;
}
Run Code Online (Sandbox Code Playgroud)


Kam*_*y D 19

2016答案:

Javascript有这个功能,所以不需要Jquery.

yournumber.toLocaleString("en");
Run Code Online (Sandbox Code Playgroud)

  • 这适用于所有浏览器吗?它在chrome上运行良好.它能用于IE9 +和歌剧,野生动物园吗? (2认同)

bam*_*sza 18

使用函数Number();

$(function() {

  var price1 = 1000;
  var price2 = 500000;
  var price3 = 15245000;

  $("span#s1").html(Number(price1).toLocaleString('en'));
  $("span#s2").html(Number(price2).toLocaleString('en'));
  $("span#s3").html(Number(price3).toLocaleString('en'));

  console.log(Number(price).toLocaleString('en'));

});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<span id="s1"></span><br />
<span id="s2"></span><br />
<span id="s3"></span><br />
Run Code Online (Sandbox Code Playgroud)


Nat*_*ong 16

更彻底的解决方案

这是replace电话的核心.到目前为止,我认为任何提议的解决方案都不会处理以下所有情况:

  • 整数: 1000 => '1,000'
  • 字符串: '1000' => '1,000'
  • 对于字符串:
    • 小数后保留零: 10000.00 => '10,000.00'
    • 丢弃十进制前的前导零: '01000.00 => '1,000.00'
    • 十进制后不添加逗号: '1000.00000' => '1,000.00000'
    • 保留领先-+:'-1000.0000' => '-1,000.000'
    • 返回未修改的包含非数字的字符串: '1000k' => '1000k'

以下功能可以完成上述所有操作.

addCommas = function(input){
  // If the regex doesn't match, `replace` returns the string unmodified
  return (input.toString()).replace(
    // Each parentheses group (or 'capture') in this regex becomes an argument 
    // to the function; in this case, every argument after 'match'
    /^([-+]?)(0?)(\d+)(.?)(\d+)$/g, function(match, sign, zeros, before, decimal, after) {

      // Less obtrusive than adding 'reverse' method on all strings
      var reverseString = function(string) { return string.split('').reverse().join(''); };

      // Insert commas every three characters from the right
      var insertCommas  = function(string) { 

        // Reverse, because it's easier to do things from the left
        var reversed           = reverseString(string);

        // Add commas every three characters
        var reversedWithCommas = reversed.match(/.{1,3}/g).join(',');

        // Reverse again (back to normal)
        return reverseString(reversedWithCommas);
      };

      // If there was no decimal, the last capture grabs the final digit, so
      // we have to put it back together with the 'before' substring
      return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after));
    }
  );
};
Run Code Online (Sandbox Code Playgroud)

你可以在像这样的jQuery插件中使用它:

$.fn.addCommas = function() {
  $(this).each(function(){
    $(this).text(addCommas($(this).text()));
  });
};
Run Code Online (Sandbox Code Playgroud)


Rif*_*zak 11

非常简单的方法是使用toLocaleString()函数

tot = Rs.1402598 //Result : Rs.1402598

tot.toLocaleString() //Result : Rs.1,402,598
Run Code Online (Sandbox Code Playgroud)

更新日期:2021 年 1 月 23 日

变量应采用数字格式。例子 :

Number(tot).toLocaleString() //Result : Rs.1,402,598
Run Code Online (Sandbox Code Playgroud)


ben*_*wey 9

您还可以查看jquery FormatCurrency插件(我是作者); 它也支持多个语言环境,但可能具有您不需要的货币支持的开销.

$(this).formatCurrency({ symbol: '', roundToDecimalPlace: 0 });
Run Code Online (Sandbox Code Playgroud)

  • 这个问题模仿我发布这个插件的v1.3,谢谢 (4认同)

小智 5

这是我的 javascript,仅在 Firefox 和 chrome 上测试过

<html>
<header>
<script>
    function addCommas(str){
        return str.replace(/^0+/, '').replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }

    function test(){
        var val = document.getElementById('test').value;
        document.getElementById('test').value = addCommas(val);
    }
</script>
</header>
<body>
<input id="test" onkeyup="test();">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)