Posts

Showing posts from February, 2021

在 javascript 用 regular expression 為金額加上千位數分隔符號

 為了方便使用者快速判斷金額,所以想加上千位數分隔符號。例如: 3000 --> 3,000 3000000 --> 3,000,000 搜尋資料後,結論: 如果數字有小數點的話,可以用  const amount = '3000.00' amount.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ',') 參考資料: Javascript之數值千分位符號(Comma)的顯示 如果沒有小數點的話,可以用  const amount = '3000' amount.replace(/\B(?=(\d{3})+(?!\d))/g, ',') 參考資料: [Javascrpt]轉換數字成含千分位的文字   不過這個鬼畫符的語法我完全看不懂,查資料的時候一度不肯相信這是真正的程式碼呢⋯⋯因緣際會在讀書會中,得到 Helix 同學提示的關鍵字「 regular expression」,決定試著弄懂,「amount.replace(/\B(?=(\d{3})+(?!\d))/g, ',')」到底是什麼意思。 一、 String.prototype.replace() - MDN 範例:我不小心把 world 拼成 word,想要把句子裡所有的 word 都替換成  world。 const text = 'Hello word! Hello word!' console.log(text.replace('word', 'world')) 結果印出 Hello world! Hello word! 很不幸地,只有第一個錯字有替換,其他錯字都被放生了。如果想要替換全部的 word,就要這樣寫: const text = 'Hello word! Hello word!' console.log(text.replace( /word/ g , ' world '))