密码正则表达式

密码正则表达式,第1张

1、至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/ 

其中 [\s\S] 中的\s空白符,\S非空白符,所以[\s\S]是任意字符。也可以用 [\d\D]、[\w\W]来表示。

2、至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数字字母):

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

3、至少8个字符,至少1个字母,1个数字和1个特殊字符:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$

4、至少8个字符,至少1个大写字母,1个小写字母和1个数字:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

5、至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}

6、最少8个最多十个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}

所求正则表达式为:

((?=.*\d)(?=.*\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))^.{8,16}$

解释:

^.{8,16}$ # 密码长度为8~16位

((?=.*\d)(?=.*\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))# 数字、字母、符号至少包含两种。

数字、字母、字符至少包含两种,可分为4种情况:数字字母,数字符号,字母符号,数字字母符号

(?=.*\d)(?=.*\D) # 必须包含数字和非数字(包括:数字字母,数字符号,数字字母符号)

|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]) # 或者必须包含字母和非字母(包括:符号数字,符号字母,符号数字字母)

public static void main(String[] args) {

Pattern p = Pattern.compile("^([a-zA-Z0-9]*[a-zA-Z]+[0-9]+[a-zA-Z0-9]*)*$")

Matcher m = p.matcher("1a11")

while(m.find()){

System.err.print(m.group()+"\t")

}

}

public static void main(String[] args) {

Pattern p = Pattern.compile("^[a-zA-Z0-9]*(([0-9][a-zA-Z])|([0-9][a-zA-Z]))[a-zA-Z0-9]*$")

Matcher m = p.matcher("A1AAA")

while(m.find()){

System.err.print(m.group()+"\t")

}

}

真心觉得8-16位这个条件无法搞出来,建议还是不要用正则匹配了,本来就是模糊匹配中在加定量的匹配...哥觉得正则表达式很强大但也有局限性的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11570005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存