2014-11-05 151 views
0

现在我有这个正则表达式来返回格式化数字的数字。在小数点后加两位数 - 正则表达式jquery

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

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

+0

将'(?<= \。\ d)$'替换为'0' – sln 2014-11-05 17:44:06

+0

并将'(?<= \。)$'替换为'00' – sln 2014-11-05 17:49:10

+0

[javascript number/currency formatting] ://stackoverflow.com/questions/9318674/javascript-number-currency-formatting) – amphetamachine 2014-11-05 18:01:20

回答

1

如果你刚刚的数字格式有2位小数的正则表达式似乎是大材小用,你可以只使用下列内容:

return amount.toFixed(2);

除非有你绝对必须使用正则表达式的具体原因是什么?

+0

你几乎在那里。 'parseFloat(possibleAString).toFixed(2)' – amphetamachine 2014-11-05 17:46:06

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

+0

这可以工作,但如果没有小数,它不会增加两个零。如果在period后没有数字,请帮助我在小数点后加两个零。例如,如果我提供$ 1500,它应该是$ 1,500.00。现在它的价格为1500美元。 – 2014-11-05 19:21:16

+0

我已更新我的答案,向您展示如何将'.toFixed(2)'技术与您自己的正则表达式集成。 – 2014-11-05 22:13:02

0

你并不需要使用正则表达式进行此项操作。

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

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

+0

这不起作用,因为它总是以$ 1.00返回 – 2014-11-05 19:19:50

相关问题