給10000000000三位打點 變成 10.000.000.000
a 梳理思路
要先明白的是,我們將要轉換成的數字格式是這樣:從個位往左數起,每三位前插入一個千位分隔符,,即可以想象成我們要把每三位數字前面的那個空""匹配出來,並替換成千位分隔符,。每個千位分隔符后面的數字個數是3個或3的倍數個。
b 代碼書寫
1、我們要找的是那些后面緊跟着三位數字的空 “”

這里面我們應用到了正向預查,a(?=n)即匹配出表達式n前面的內容a,因為我們要匹配的是空,即不用填寫a的內容。
因為需要從右往左匹配,所以表示結尾的$是必須要有的。三位數字用\d{3}來表示,由於我們不知道究竟有多少組這樣的三位數字,所以需要在\d{3}后面加上+,來表示匹配任何包含至少一組三位數字的字符串。至目前,/(\d{3})+$/g表示作為結尾的3個或3的倍數個數字。
2、下面對確定匹配位置的空進行替換,替換字符串逗號‘,’

3、會出現的問題
現在是八位數字,如果再加一個0,湊夠九位數呢,它可是3的倍數,我們試驗一下:

這串數字最前面也被添加了一個, 。因為總位數為九,為三的倍數,所以在數字最前面也進行了空格匹配。
那么怎么解決呢?我們對代碼進行一下完善,在\d前面加一個非單詞邊界\B,用來表示所匹配的這個空后面不能是一個單詞邊界,這樣就可以把最前面的這個,去掉了。
最終的代碼如下

總結:
g 是表示全局匹配的修飾符,全局匹配指查找所有匹配而非在找到第一個匹配后停止。
$ 是表示結尾的量詞,如n$,匹配的是任何以n為結尾的字符串。
\d 是查找數字的元字符。
n{X} 是匹配包含 X 個 n 的序列的字符串的量詞。
n+ 是匹配任何包含至少一個 n 的字符串的量詞。
?=n 正向預查,用於匹配任何其后緊接指定字符串 n 的字符串。
match() String對象的方法,作用是找到一個或多個正則表達式的匹配。
replace() String對象的方法,作用是替換與正則表達式匹配的子串。
\B 是表示匹配非單詞邊界的元字符,與其互為補集的元字符是\b,表示匹配單詞邊界。