慕碼人8056858
2018-11-29 18:14:36
var reg = /([HhMsDm])\1?/g;請問這個reg會匹配那些字符串?1是什么意思
1 回答

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個贊
[]
表示匹配這個里面的任意一個字符;()
表示捕獲型分組,也就是()
里面匹配到的內(nèi)容會被保存下來,以備后續(xù)使用;\1
表示第一個捕獲型分組的內(nèi)容,也就是說這個位置上的內(nèi)容要和第一個捕獲型分組的內(nèi)容一樣;?
表示前面的內(nèi)容出現(xiàn)0
次或者1
次。
所以,[HhMsDm]
匹配H
或h
或M
或s
或D
或m
,這個匹配的結(jié)果會作為\1
的內(nèi)容,?
說明\1
出現(xiàn)0次或者1次,所以上面的正則等價于
當(dāng)?匹配0次的時候,即
/([HhMsDm])/g
;當(dāng)?匹配1次的時候,即
/([HhMsDm])\1/g
;
在情況1的時候,匹配"H", "h", "M", "s", "D", "m"
;
當(dāng)情況2的時候,匹配"HH", "hh", "MM", "ss", "DD", "mm"
;
所以這個正則會匹配字符串中情況1和情況2匹配的子串。
添加回答
舉報
0/150
提交
取消