十进制后加两位数 - 正则表达式jquery

时间:2014-11-05 17:35:05

标签: jquery regex

现在我有这个正则表达式返回格式化数字的数字。

function formatCurrency(amount) {
    var amt = ""+amount;
    return amt.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
}

任何提供的号码的结果即将到期:$ 1,944.5。 但我需要在十进制后添加两位数。它应该是到期日:$ 1,944.50。请帮助我使用正确的正则表达式在小数点后添加两位数。谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

如果你只是将数字格式化为2位小数,那么正则表达式似乎有点矫枉过正,你可以使用以下内容:

return amount.toFixed(2);

除非您有特殊原因要绝对使用正则表达式吗?

答案 1 :(得分:0)

如果你想用正则表达式添加尾随零,你可以这样做;

function formatCurrency(amount) {
    var amt = ""+amount;
    amt = amt.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    return amt.replace(/(\.\d{1})$/, "$1"+"0");
}

fiddle

为了确保小数点后总是有2个数字,即使没有分数,也可以在应用正则表达式之前使用.toFixed(2)

function formatCurrency(amount) {
    // Ensures there are 2 decimal places
    var amt = parseFloat(amount).toFixed(2); 
    // Add commas for every block of 3 digits
    return amt.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
}

fiddle

答案 2 :(得分:0)

您无需使用正则表达式进行此操作。

function formatCurrency(amount) {
    return parseFloat(amount).toFixed(2);
}

现在,这只适用于西方货币。