您的位置:首页 > 其它

正则表达式之密码效验(检验密码是含有小写字母、大写字母、数字)

2016-11-09 20:20 399 查看
公司新系统需要实现一个注册功能,需要写一个正则表达式来检验一个密码是否含有小写字母、大写字母、数字....,且密码长度为6-12位

举例1:  本人已测试.
String password="AA0000fff111";

String regex="^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])).{6,12}$";

System.out.println(password.matches(regex));

转载的:   

 
正则表达式:  ^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16}$


解析:


一、 首先分开来看这个正则表达式每个小部分的含义

(1)(?![A-Z]+$)      

   A-Z+$的意思是从当前位置到结尾全是大写字母   ![ A-Z ]+$的意思就是匹配不全是大写字母组成的字符串 (?![A-Z+$])的意思就是如果从当前匹配位置开始到结尾是一个不全是大写字母组成的字符串,就匹配它,否则匹配位置保持不变,执行接下来的匹配表达式。

举个列子来说:

有一个字符串   ABCDEFG

如果以^(?![A-Z]+$)ABC去匹配这个串,那么过程是这样的

1 先用(?![A-Z+$])去匹配它,匹配位置是从A开始 ,从A扫描到结尾G,发现这个字符串全是由大写字母组成的,不符合规则,就不匹配它,重新会到A去,再执行ABC这个匹配,最后输出ABC

(2)(?![a-z]+$) 

有了上面的举例,就不用细说了 ,这个的意思就是匹配不全是小写字母组成的字符串

      (3)(?![\d+$])

匹配不全是数字的字符串

(4)(?!\W+$)

匹配不全是特殊字符组成的字符串

     (5)\S{6,16}

匹配任何可见字符组成的字符串,并且长度在6到16为。


二、合起来看

分析了上面每个分别的小表达式的意义之后,我们将表达式连起来呢看,意思就是,匹配一个不全是大写字母,也不全是小写字母,也不全是数字,也不全是特殊字符的字符串,并且这个字符串全是可见字符,并且字符串长度在6到16位(   \S{6,16}  )。所以能满足这个要求的就只能是含有小写字母、大写字母、数字、特殊符号的两种及以上的字符串了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐