正則參考答案:
var a = 123456789;
String(a).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
正則表達(dá)式拆解
1. 基礎(chǔ)知識
-
x(?=y)【先行斷言】匹配“x”僅僅當(dāng)“x”后面跟著“y”
例如:/Java(?=Script)/Java開頭的語言有很多我只認(rèn)識JavaScript -
x(?!y)【反向否定查找】僅僅當(dāng)“x”后面不跟著“y”時匹配“x”
例如:/Java(?!Script)/Java開頭的語言有很多我就不喜歡JavaScript
2. 正則拆解
- 第一步:
\B匹配非單詞邊界 - 第二步:
?=(\d{3})匹配后面跟3個數(shù)字字符的位置,/+/表示匹配到底,此時定位到789 - 第三步:加
“ , ”,此時123456789=>123456,789 - 第四步:
?!\d匹配定位到123456, - 第五步:
/**/g表示會遞歸匹配,繼續(xù)對123456進(jìn)行操作上述動作
其他
- 正則沒有從右到左匹配的方法
- 用字符串+數(shù)組方法實(shí)現(xiàn)的話記得反轉(zhuǎn)字符串
- JS內(nèi)置
toLocaleString方法可直接實(shí)現(xiàn),但存在兼容問題 - 前置判斷必須大于999才操作