【问题标题】:Adding two digits after decimal - regex jquery在小数点后添加两位数字 - 正则表达式 jquery
【发布时间】:2015-01-02 00:26:30
【问题描述】:

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

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

任何提供的数字的结果都是到期:1,944.5 美元。 但我需要在小数点后添加两位数,应为到期:1,944.50 美元。请帮助我使用正确的正则表达式在小数点后添加两位数。谢谢你的帮助。

【问题讨论】:

标签: jquery regex


【解决方案1】:

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

return amount.toFixed(2);

除非有特定原因您绝对必须使用正则表达式?

【讨论】:

  • 你快到了。 parseFloat(possiblyAString).toFixed(2)
【解决方案2】:

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

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

【讨论】:

  • 这可行,但如果没有小数,则不会添加两个零。如果句号后没有数字,请帮我在小数点后添加两个零。例如,如果我提供 1500 美元,它应该是 1,500.00 美元。现在它的价格是 1,500 美元。
  • 我更新了我的答案,向您展示如何将 '.toFixed(2)` 技术与您自己的正则表达式集成。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多