qq_遁去的一_1
2019-02-01 18:23:41
(?=[a-zA-Z]+)(?=[0-9]+)[a-zA-Z0-9]{3,10}上面是我寫的,但不正確,不知道原因。我理解的是第一個(gè)正向預(yù)查找出至少一個(gè)字母,和第二個(gè)正向預(yù)查找出至少一個(gè)字母。然后最后是[a-zA-Z0-9]{3,10},這大家都懂。不知道哪里錯(cuò)了,是不是我對(duì)正向預(yù)查的理解不正確?
1 回答

萬千封印
TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
?=
不同的人叫法不一樣,你稱之為預(yù)查
,我更傾向于叫零寬斷言
,也就是說?=
只是匹配一個(gè)位置,并不匹配具體的字符,所以是零寬
,也就是寬度是0。
所以(?=[a-zA-Z]+)
匹配一個(gè)位置,這個(gè)位置后面緊跟
至少一個(gè)字母,注意此時(shí)位置并沒有后移;(?=[0-9]+)
也是匹配一個(gè)位置,這個(gè)位置后面后面緊跟
至少一個(gè)數(shù)字;
因?yàn)?code>(?=[a-zA-Z]+)和(?=[0-9]+)
都只匹配位置,而不匹配具體的字符,這兩個(gè)又直接寫在了一起,也就是說(?=[a-zA-Z]+)(?=[0-9]+)
意味著這個(gè)位置后面緊跟
至少一個(gè)字母,同時(shí)緊跟
至少一個(gè)數(shù)字,也就是說這個(gè)位置后面的字符既是字母又是數(shù)字,顯然這樣的位置不存在。
Update:
你試試這個(gè)/^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{3,10}$/
。
添加回答
舉報(bào)
0/150
提交
取消