千位符正則解析:replace(/\d(?=(?:\d{3})+\b)/g, '$&,')


1234567890.012.replace(/\d(?=(?:\d{3})+\b)/g, '$&,')

查找以\d為開頭,以\b為結束(即"."的前面,這點我是到最后面才理解到的),中間 至少出現一次\d{3}的匹配
紅色是開頭\d,灰色是\d{3}+
第一次匹配到 1 234567890.012
第二次匹配到1234567890.012
第三次匹配到1234567890.012
然后在匹配到的數字后面加個',', 變成 1,2 34,567,890 .012
 
但是這里有幾個難點要理解?=、?:和\b
?=是正向預匹配,即不會讓?=后面的內容被匹配出來,這里的作用是不讓\d{3}+被替換掉
?: 是非捕獲性匹配,它使匹配不緩存起來,這點我要另起文章寫,去掉了也不影響正確結果
\b是單詞分界符,這個才是重點,去掉了會變成 1,2, 3,4,5,6,7,890 .012
因為少了\b限定,它不會以"."作結束標志,試理解下\d(?=\d{3}+),只要滿足開頭有一個\d后面至少有一個\d{3},它會這樣匹配:
第一次: 1 234567890. 012
第二次:1234567890.012
第三次:123 456789 0.012
第四次:1234567890.012
第五次:1234567890.012
第六次:1234567890.012
第七次:1234567890.012
然后在匹配到的數字后面加個',', 變成1,2,3,4,5,6,7,890.012
把\b換成\.也是可行的
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM