常用疑难正则表达式整理

常用疑难正则表达式整理

一. 在Windows Server上修改用户密码时,一般要求满足以下要求:
(1) 6到256个字符
(2) 包括以下四类字符中的至少三类: 数字/小写字母/大写字母/其他字符
(3) 其它无法用正则表达式校验的规则(例如最短密码修改时间)
我们就可以用以下正则表达式来校验密码的合法性:
(?=^.{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
Windows Server的机器名一般要求满足以下要求(比微软官方要求有所简化):
(1) 2到15个字符。只能包括: 数字/小写字母/大写字母/减号
(2) 不能全部为数字
我们就可以用以下正则表达式来校验机器名的合法性:
^(?!^\d* ) ( [ a z A Z 0 9 ] 2 , 15 )

三. 写一个正则表达式,要求匹配字符串或者满足条件A或者满足条件B
在非必须填的电话号码域中,用户可以输入一个合法的电话号码,也可以留空
我们就可以用以下正则表达式来校验机器名的合法性:
(^$|\d{7,16})

四. 由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。
^(?![0-9]+ ) ( ? ! [ a z A Z ] + )[0-9A-Za-z]{8,16}$

分开来注释一下:
^ 匹配一行的开头位置
(?![0-9]+ ) ( ? ! [ a z A Z ] + ) 预测该位置后面不全是字母
[0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
$ 匹配行结尾位置

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。行起始符(^),行终止符($)和非贪婪标志(?)在这里的使用非常重要。



猜你喜欢

转载自blog.csdn.net/qq_34147555/article/details/81607915