正則表達(dá)式: ^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16}$
一、 首先分開來看這個(gè)正則表達(dá)式每個(gè)小部分的含義
(1)(?![A-Z]+$)
A-Z+$的意思是從當(dāng)前位置到結(jié)尾全是大寫字母 ![ A-Z ]+$的意思就是匹配不全是大寫字母組成的字符串 (?![A-Z+$])的意思就是如果從當(dāng)前匹配位置開始到結(jié)尾是一個(gè)不全是大寫字母組成的字符串,就匹配它,否則匹配位置保持不變,執(zhí)行接下來的匹配表達(dá)式。
舉個(gè)列子來說:
有一個(gè)字符串 ABCDEFG
如果以^(?![A-Z]+$)ABC去匹配這個(gè)串,那么過程是這樣的
1 先用(?![A-Z+$])去匹配它,匹配位置是從A開始 ,從A掃描到結(jié)尾G,發(fā)現(xiàn)這個(gè)字符串全是由大寫字母組成的,不符合規(guī)則,就不匹配它,重新會(huì)到A去,再執(zhí)行ABC這個(gè)匹配,最后輸出ABC
(2)(?![a-z]+$)
有了上面的舉例,就不用細(xì)說了 ,這個(gè)的意思就是匹配不全是小寫字母組成的字符串
(3)(?![\d+$])
匹配不全是數(shù)字的字符串
(4)(?!\W+$)
匹配不全是特殊字符組成的字符串
(5)\S{6,16}
匹配任何可見字符組成的字符串,并且長度在6到16為。
分析了上面每個(gè)分別的小表達(dá)式的意義之后,我們將表達(dá)式連起來呢看,意思就是,匹配一個(gè)不全是大寫字母,也不全是小寫字母,也不全是數(shù)字,也不全是特殊字符的字符串,并且這個(gè)字符串全是可見字符,并且字符串長度在6到16位( \S{6,16} )。所以能滿足這個(gè)要求的就只能是含有小寫字母、大寫字母、數(shù)字、特殊符號的兩種及以上的字符串了。