replace
第一個(gè)參數(shù)為一個(gè)字符串時(shí), 它其實(shí)做的是文本替換, 所以這里的'$#$'和正則表達(dá)式無關(guān), 所以第一次replace
只是把字符.替換成'$#$', 看到后面的代碼(第三次replace
)又把它轉(zhuǎn)換回來, 可以推測(cè)目的只是為了把'.'轉(zhuǎn)換成一個(gè)比較特殊的字符防止被第二個(gè)正則替換給替換掉
試著解讀一下:
someText
.replace(".", "$#$") //1. 把字符'.'替換成'$#$', 因?yàn)閞eplace對(duì)于字符串只匹配一次, 所以只會(huì)替換第一個(gè)'.'.replace(/\./g, "") //2. 把其余的字符'.'替換為空字符串(刪除).replace("$#$", ".") //3. 把字符'$#$'替換回原來的'.'.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'))
/*
4.
^ : 字符串開始;
(\-) : 第一組匹配, 匹配1個(gè)'-';
* : 重復(fù)匹配`-` 0-n個(gè), 但不進(jìn)入分組
(\d+) : 第二組匹配, 匹配1-n個(gè)數(shù)字;
\. : 隨后匹配一個(gè)'.';
(\d\d) : 第三組匹配, 一個(gè)兩位的數(shù)字;
.*$ : 后面匹配任意字符0-n個(gè), 直到字符串結(jié)束.
替換的目標(biāo)是: '(第一組匹配)(第二組匹配).(第三組匹配)'
*/