亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

正則:將一串?dāng)?shù)字的每3個就用逗號分開的問題
高洛峰
高洛峰 2016-11-10 11:42:51
0
4
1358

'12334565632'.replace(/(\d)(?=(\d{3})+$)/g, "$1,");//結(jié)果:"12,334,565,632"

上邊這個是網(wǎng)上找的,是可以實現(xiàn)的,但是和我理解的不一樣,我說下我是怎么想的,大家?guī)臀抑刚?,謝謝。
1.(?=(\d{3})+$)/g 這里用了一個零寬斷言,我認為(\d{3})后邊這個+是說出現(xiàn)1次或更多次的意思,那么如果我將前邊的字符串換成'2'的時候我發(fā)現(xiàn)也匹配成功了,按理說他沒有匹配到3個數(shù)字??!為什么還是成功了呢??

2.這個$1匹配的應(yīng)該是表達式(\d)這個啊,這個不是1個數(shù)字嗎,為什么顯示結(jié)果$1匹配的確是3位呢??

求大神解答··


高洛峰
高洛峰

擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...

reply all(4)
學(xué)霸

第一問你說的換成2是指把{3}換成{2}嗎? 這樣最后結(jié)果只會是"1,23,34,56,56,32"

第二問我的理解是$1指的是匹配出來的項中符合第一個小括號的內(nèi)容,匹配的項有"5632","4565632","2334565632",紅色部分就是符合第一個小括號的,然后在這幾個數(shù)的后面添加逗號。


三叔

問題一:

(\d{3})+$ 的意思是連續(xù)匹配 3 個數(shù)字,且最后一次匹配以 3 個數(shù)字結(jié)尾。如果將數(shù)字變成 2,那么就是連續(xù)匹配 2 個數(shù)字且最后一次匹配也是 2 個數(shù)字,就像這樣 "1,23,34,56,56,32"

問題二:

$1 并不是 1 ,因為 1 并不符合條件(?=(\d{3})+$),它要求一個數(shù)字(\d)后面的數(shù)字的個數(shù)是 3 的倍數(shù),只要滿足這種條件,(\d) 才能匹配成功,才能讓 $1 反向引用?!?2334565632” 這個例子中,只有第二,第五,第八個數(shù)字滿足條件


學(xué)霸

/(\d)(?=(\d{3})+$)/g , 這個正則表達式我是這么理解的:
先理解一個要點:/(\d)(?=(\d{3})+$)/g
紅色的 \d 和 $ 之間,數(shù)字字符的個數(shù)是 3 的整數(shù)倍。

然后,把這個數(shù)字字符捕獲到分組中,在它后邊加個逗號“,”。 ?
效果如下:
'12334565632' ?
替換后:
'12,334,565,632'

用零寬斷言,是為了保證后面的字符不被消耗掉,這樣可以多次匹配。


三叔

網(wǎng)上這個方法用的是 零寬度正預(yù)測先行斷言,它斷言匹配的自身出現(xiàn)的位置d的后面能跟著匹配到1個或者n個3位數(shù)且剛好到結(jié)尾$。
1.那么如果我將前邊的字符串換成'2'的時候我發(fā)現(xiàn)也匹配成功了,不管你換的是字符串還是正則表達式,應(yīng)該都是不成功的。
2.$1匹配的就是表達式(d)這個。你可以把全局g去掉看一下:

'12334565632'.replace(/(\d)(?=(\d{3})+$)/, "$1,"); //"12,334565632"

題中分別匹配的是str[1],str[4],str[7] ,并在后面加上','


Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template