正則表達式實現(xiàn)與或非關系【推薦】
寫一個正則表達式,要求匹配字符串同時滿足條件A和條件B
我們可以先寫兩個子表達式PatternA和PatternB,分別校驗條件A和條件B。然后結合成一個新的表達式
(?=PatternA)PatternB
例如,當在Windows Server上修改用戶密碼時,一般要求滿足以下要求:
1. 6到256個字符
2. 包括以下四類字符中的至少三類: 數(shù)字/小寫字母/大寫字母/其他字符
3. 其它無法用正則表達式校驗的規(guī)則(例如最短密碼修改時間)
我們就可以用以下正則表達式來校驗密碼的合法性(其中藍色和綠色部分分別為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]))^.*
•寫一個正則表達式,要求匹配字符串滿足條件A,但不可滿足條件B
我們可以先寫兩個子表達式PatternA和PatternB,分別校驗條件A和條件B。然后結合成一個新的表達式
(?!PatternB)PatternA
例如,Windows Server的機器名一般要求滿足以下要求(比微軟官方要求有所簡化):
1. 2到15個字符。只能包括: 數(shù)字/小寫字母/大寫字母/減號
2. 不能全部為數(shù)字
我們就可以用以下正則表達式來校驗機器名的合法性(其中藍色部分分別為PatternB,綠色部分為PatternA):
^(?!^\d*$)([a-zA-Z0-9-]{2,15})$
•寫一個正則表達式,要求匹配字符串或者滿足條件A或者滿足條件B
我們可以先寫兩個子表達式PatternA和PatternB,分別校驗條件A和條件B。然后結合成一個新的表達式
(PatternA|PatternB)
例如在非必須填的電話號碼域中,用戶可以輸入一個合法的電話號碼,也可以留空
我們就可以用以下正則表達式來校驗機器名的合法性(其中藍色部分分別為PatternB,綠色部分為PatternA):
(^$|\d{7,16})
注意:行起始符(^),行終止符($)和非貪婪標志(?)在這里的使用非常重要。
欄 目:正則表達式
下一篇:正則表達式re.sub替換不完整的問題及完整解決方案
本文地址:http://mengdiqiu.com.cn/a1/zhengzebiaodashi/11221.html
您可能感興趣的文章
- 01-11正則表達式實現(xiàn)添加、刪除、替換三種功能
- 01-11python 用正則表達式篩選文本信息的實例
- 01-11正則表達式之匹配數(shù)字范圍
- 01-11python爬蟲正則表達式之處理換行符
- 01-11正則表達式匹配路由的實現(xiàn)代碼
- 01-11正則表達式截取身份證號碼加密的方法
- 01-11js正則表達式 匹配兩個特定字符間的內容示例
- 01-11MySQL使用正則表達式進行查詢操作經(jīng)典實例總結
- 01-11python正則表達式之對號入座篇
- 01-11詳解正則表達式實現(xiàn)二代身份證號碼驗證


閱讀排行
本欄相關
- 01-11正則表達式實現(xiàn)添加、刪除、替換三
- 01-11正則表達式之匹配數(shù)字范圍
- 01-11python 用正則表達式篩選文本信息的實
- 01-11正則表達式匹配路由的實現(xiàn)代碼
- 01-11python爬蟲正則表達式之處理換行符
- 01-11js正則表達式 匹配兩個特定字符間的
- 01-11正則表達式截取身份證號碼加密的方
- 01-11python正則表達式之對號入座篇
- 01-11MySQL使用正則表達式進行查詢操作經(jīng)典
- 01-11詳解正則表達式實現(xiàn)二代身份證號碼
隨機閱讀
- 01-10C#中split用法實例總結
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?