2014-11-05 61 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

相關問題