寫一個(gè)正則表達(dá)式,要求匹配字符串同時(shí)滿足條件A和條件B
我們可以先寫兩個(gè)子表達(dá)式PatternA和PatternB,分別校驗(yàn)條件A和條件B。然后結(jié)合成一個(gè)新的表達(dá)式
(?=PatternA)PatternB
例如,當(dāng)在Windows Server上修改用戶密碼時(shí),一般要求滿足以下要求:
1. 6到256個(gè)字符
2. 包括以下四類字符中的至少三類: 數(shù)字/小寫字母/大寫字母/其他字符
3. 其它無法用正則表達(dá)式校驗(yàn)的規(guī)則(例如最短密碼修改時(shí)間)
我們就可以用以下正則表達(dá)式來校驗(yàn)密碼的合法性(其中藍(lán)色和綠色部分分別為PatternA和PatternB):
(?=^.{6,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
•寫一個(gè)正則表達(dá)式,要求匹配字符串滿足條件A,但不可滿足條件B
我們可以先寫兩個(gè)子表達(dá)式PatternA和PatternB,分別校驗(yàn)條件A和條件B。然后結(jié)合成一個(gè)新的表達(dá)式
(?!PatternB)PatternA
例如,Windows Server的機(jī)器名一般要求滿足以下要求(比微軟官方要求有所簡(jiǎn)化):
1. 2到15個(gè)字符。只能包括: 數(shù)字/小寫字母/大寫字母/減號(hào)
2. 不能全部為數(shù)字
我們就可以用以下正則表達(dá)式來校驗(yàn)機(jī)器名的合法性(其中藍(lán)色部分分別為PatternB,綠色部分為PatternA):
^(?!^\d*$)([a-zA-Z0-9-]{2,15})$
•寫一個(gè)正則表達(dá)式,要求匹配字符串或者滿足條件A或者滿足條件B
我們可以先寫兩個(gè)子表達(dá)式PatternA和PatternB,分別校驗(yàn)條件A和條件B。然后結(jié)合成一個(gè)新的表達(dá)式
(PatternA|PatternB)
例如在非必須填的電話號(hào)碼域中,用戶可以輸入一個(gè)合法的電話號(hào)碼,也可以留空
我們就可以用以下正則表達(dá)式來校驗(yàn)機(jī)器名的合法性(其中藍(lán)色部分分別為PatternB,綠色部分為PatternA):
(^$|\d{7,16})
注意:行起始符(^),行終止符($)和非貪婪標(biāo)志(?)在這里的使用非常重要。
您可能感興趣的文章:- PHP 正則表達(dá)式效率 貪婪、非貪婪與回溯分析(推薦)
- php正則表達(dá)式中貪婪與非貪婪介紹
- PHP正則表達(dá)式之捕獲組與非捕獲組
- PHP之正則表達(dá)式捕獲組與非捕獲組(詳解)
- 正則表達(dá)式之 貪婪與非貪婪模式詳解(概述)
- 小議正則表達(dá)式效率 貪婪、非貪婪與回溯
- [正則表達(dá)式]貪婪模式與非貪婪模式