参考文章:https://blog.csdn.net/sjdjjd6466446/article/details/108991554
最近做用户注册密码校验,需求:
1、长度大于8,且小于32
2、不能包含用户名
3、不能包含连续3位及以上相同字母或数字
4、不能包含3个及以上字典连续字符
4、数字、小写字母、大写字母、特殊字符,至少包含三种
因为没做过字典连续字符的判断,正则表达式好像也做不到,一时没有思路,参考了开篇提到的那篇博客(键盘连续字符的判断),所以有了以下工具方法,可自行取舍~
/**
* 规则:
* 1、长度大于8,且小于32
* 2、不能包含用户名
* 3、不能包含连续3位及以上相同字母或数字
* 4、不能包含3个及以上字典连续字符
* 4、不能包含3个及以上键盘连续字符
* 4、数字、小写字母、大写字母、特殊字符,至少包含三种
*/
public class CheckPassword {
/**
* 数字
*/
private static final String REG_NUMBER = ".*\\d+.*";
/**
* 小写字母
*/
private static final String REG_UPPERCASE = ".*[A-Z]+.*";
/**
* 大写字母
*/
private static final String REG_LOWERCASE = ".*[a-z]+.*";
/**
* 特殊符号(~!@#$%^&*()_+|<>,.?/:;'[]{}\)
*/
private static final String REG_SYMBOL = ".*[~!@#$%^&*()_+|<>,.?/:;'\\[\\]{}\"]+.*";
/**
* 键盘字符表(小写)
* 非shift键盘字符表
*/
private static final char[][] CHAR_TABLE1 = new char[][]{
{'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\0