需求
對(duì)一個(gè)數(shù)字冻晤,進(jìn)行千分位格式化
例如:1234567洲炊,格式化成:1,234,567
原理
從左向右檢查數(shù)字吨悍,如果剩下的數(shù)字長(zhǎng)度可以被3整除定拟,則插入一個(gè)逗號(hào)
例如:
1. 先檢查1于微,1后面有6位數(shù)字,則插入一個(gè)逗號(hào)
1. 再檢查2青自,2后臺(tái)5位數(shù)字株依,不能被3整除,跳過(guò)
正則表達(dá)式1
'1234567'.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
原理為:查找數(shù)字延窜,如果某一位滿(mǎn)足“它后面的數(shù)字可以被3整除”恋腕,則把此數(shù)字替換為“數(shù)字本身,"
正則表達(dá)式2
'1234567'.replace(/\B(?=(\d{3})+$)/g, ',')
原理為:查找數(shù)字的邊界,如果此邊界滿(mǎn)足“它后面的數(shù)字可以被2整除”逆瑞,則把邊界替換為”,"
小數(shù)
對(duì)于小數(shù)荠藤,”它后面的數(shù)字“ 意思要擴(kuò)展為:到結(jié)尾的數(shù)字 或 到小數(shù)點(diǎn)的數(shù)字
把$改為($|\.),即可
'1234567.1234567'.replace(/(\d)(?=(\d{3})+($|\.))/g, '$1,')
此時(shí)获高,格式化結(jié)果如下
"1,234,567.1,234,567"
小數(shù)點(diǎn)后也有逗號(hào)哈肖。
拒絕格式化小數(shù)點(diǎn)后面的內(nèi)容
加上(?<!\.\d*) 預(yù)檢查,意思是只處理前面不能包含 ".數(shù)字"的內(nèi)容
'1234567.1234567'.replace(/(?<!\.\d*)(\d)(?=(\d{3})+($|\.))/g, '$1,')