Javascript jQuery函数使用逗号和十进制设置数字格式

Javascript jQuery函数使用逗号和十进制设置数字格式,javascript,jquery,regex,Javascript,Jquery,Regex,我使用以下函数将数字格式化为用户类型。它将每隔3个数字插入一个逗号。例如:45696.36变为45696.36 然而,我遇到了一个问题。如果小数点后的数字超过3位,则开始向其添加逗号。例如:1136.6696变为1136.6696 这是我的职责: $.fn.digits = function(){ return this.each(function() { $(this).val( $(this).val().replace(/[^0-9.-]/g, '') ); $(thi

我使用以下函数将数字格式化为用户类型。它将每隔3个数字插入一个逗号。例如:
45696.36
变为
45696.36

然而,我遇到了一个问题。如果小数点后的数字超过3位,则开始向其添加逗号。例如:
1136.6696
变为
1136.6696

这是我的职责:

$.fn.digits = function(){
  return this.each(function() {
    $(this).val( $(this).val().replace(/[^0-9.-]/g, '') );
    $(this).val( $(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
  }) 
}

如何修复此问题,使其停止在小数点后放置逗号?我正在使用jquery1.8。谢谢

您可以通过在“
”字符处拆分字符串,然后仅对第一部分执行逗号转换来完成此操作,如下所示:

function ReplaceNumberWithCommas(yourNumber) {
    //Seperates the components of the number
    var n= yourNumber.toString().split(".");
    //Comma-fies the first part
    n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    //Combines the two sections
    return n.join(".");
}

ReplaceNumberWithCommas(1136.6696); //yields 1,136.6696

我使用lib:


该死,这是一个很好的正则表达式。上次我解决这个问题时,我再次拆分字符串以将其反转,在数组中插入逗号,然后再次联接。如果将此与currency一起使用-它并不总是有小数-将yourNumber=yourNumber添加到开头。toFixed(2)将其设置为始终显示小数,即使它们是0。这在“用户键入时”对我不起作用除非我加上yourNumber=yourNumber.replace(/,/g,”);对于一个带小数的数字来说,第一个最好的仍然是好的和简单的。您可以根据需要轻松地切换逗号和点。这是一个更好的解决方案:我知道这已经有几年了,但使用会计库确实帮助了我。谢谢
accounting.format(1136.6696, 4) // 1,136.6696