我試圖拿toLocaleString
的輸出,並做了一些額外的格式。我開始使用此代碼:如何將貨幣符號與貨幣值分開並保留小數點和逗號?
displayAmount = 1234.56789
currencyFormatted = displayAmount.toLocaleString('en-US', {style: 'currency', currency: 'USD'});
currencyFormatted的值變爲:
$1,234.57
不壞,但由於種種原因,我希望能夠給$
和1
之間添加一個空格,並圍繞它包圍一個跨度。因此,所需的輸出是:
<span>$</span> 1,234.57
所以我加入這個代碼,這是我從other answers on Stack Overflow得出:
symbolSeparated = currencyFormatted.split(/(\d+)/).filter(Boolean);
myElement.innerHTML = "<span>" + symbolSeparated[0] + "</span> " + symbolSeparated[1];
但是,我得到:
<span>$</span> 1
我意識到我的分裂是考慮逗號和小數作爲文本,並在那裏分裂。我嘗試了一些其他的正則表達式,我found,如/[^0-9\.]+/g
,但它似乎只是失敗,並且symbolSeparated[1]
將是未定義的。
在任何情況下,它不一定是正則表達式,它可以是任何函數或任何組合。問題是,如何將貨幣符號與數值分開,同時保留小數點和逗號?
請注意,貨幣符號是不保證是一個字符的長度(否則我可以只使用substring()
)。就我所知,它可以是1到3個字符。
此外,不依賴於jQuery的答案是首選。
感謝您回覆。但我得到的結果是' $ 1234.57 $'。我不確定爲什麼美元符號會重複,但無論如何,這個正則表達式絕對正確嗎? – Questioner
正則表達式本身很好。訪問匹配組時,我只是使用了錯誤的索引。我糾正了我的答案。正確的行是myElement.innerHTML =「」+ m [1] +「」+ m [2]; –
現在很好用,謝謝!就這樣我清楚,'m [0]'是原始提供的字符串的完整副本嗎? – Questioner