正則表達(dá)式實(shí)現(xiàn)與或非關(guān)系【推薦】
寫一個(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)志(?)在這里的使用非常重要。
相關(guān)文章
使用正則表達(dá)式去除所有html標(biāo)簽只保留文字
這篇文章主要介紹了使用正則表達(dá)式去除所有html標(biāo)簽只保留文字效果,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07JS和C#實(shí)現(xiàn)的兩個(gè)正則替換功能示例分析
這篇文章主要介紹了JS和C#實(shí)現(xiàn)的兩個(gè)正則替換功能,結(jié)合具體實(shí)例形式分析了js與C#進(jìn)行字符串正則替換的相關(guān)實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2017-06-06JavaScript正則表達(dá)式驗(yàn)證身份證號(hào)碼是否合法(兩種方法)
正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。下面通過本篇文章給大家介紹js正則表達(dá)式驗(yàn)證身份證號(hào)碼是否合法,需要的朋友可以參考下本篇文章2015-09-09正則表達(dá)式Regular Expression (RegExp)詳解
正則表達(dá)式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡(jiǎn)寫為regex、regexp或RE2015-11-11