带有逗号的正则表达式格式字符串数字和javascript中的2位小数

时间:2014-08-04 20:31:50

标签: javascript regex

我有一个字符n,这是一个数字。 以下是在需要的地方添加逗号,但我也想更改小数位数。它也应该在适当的时候进行.-

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

这会将1234.567之类的数字转换为1,234.567。 但我需要我的号码:1,234.57

我尝试将parts[1]转换为数字,然后进行四舍五入,然后将其连接起来;但这很容易出错。

如何通过更改正则表达式来获得此结果?感谢。

8 个答案:

答案 0 :(得分:7)

要添加逗号,您可以使用:

n = parseFloat(n).toFixed(2)
var withCommas = Number(n).toLocaleString('en');

这是fiddle

答案 1 :(得分:4)

var val = Math.round(Number(n) *100) / 100;
var parts = val.toString().split(".");
var num = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (parts[1] ? "." + parts[1] : "");

答案 2 :(得分:3)

您可以使用toFixed

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

FIDDLE

这也会使1234.0000变为1234.00,但您可以通过转换为三元组中的数字来避免这种情况,因为零是假的

答案 3 :(得分:1)

我认为这很有用



var n=1234.567
var parts = n.toFixed(2).split(".");
var num = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") + 
    (parts[1] ? "." + parts[1] : "");
console.log(num);




如果您想要结果1,234.567,请将toFixed(2)更改为toFixed(3)

答案 4 :(得分:0)

在JavaScript中格式化货币时,toLocaleString非常棒。您不需要将其与toFixed结合使用,在某些情况下它不起作用(整数,具有一位数分数的数字)。这是一个示例函数:

const formatCurrency = (num, locale = 'en-US', currency = 'USD', minimumFractionDigits = 2) => {
    if (isNaN(num)) {
        return num;
    }
  return num.toLocaleString(locale, {style: 'currency', currency, minimumFractionDigits});
};

没有超级自定义的字符串格式模式,也没有适用于特定场景的链式方法。

以下是fiddle

的示例

答案 5 :(得分:0)

为避免这种情况,请转换为三进制数字,因为零是虚假的

n = parseFloat(n).toFixed(2)
var withCommas = Number(n).toLocaleString('en');
withCommas = (withCommas.indexOf(".")== -1) ? `${withCommas}.00` : withCommas;

答案 6 :(得分:0)

var valueString="1500"; //can be 1500.0 or 1500.00 
var amount=parseFloat(valueString).toFixed(2);
var formattedString= amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(formattedString); //outputs 1,500.00

答案 7 :(得分:0)

添加到@Rob M的答案中(最小AND最大值为2dp):

function getMe2DecimalPointsWithCommas(amount) {
    return Number(amount).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}