正则 密码校验规则:8-16位字符,同时包括数字、大小写字母和特殊字符,其中特殊字符最多不能超过3个,且需要在“~ @ # $ % * _ - + = : , . ? [ ] { }”范围内
这个正则花费了我四五个小时研究:
初始思路:String regex = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}";
/** (?=.*[A-Z]) 必须有大写英文*/
/** (?=.*[a-z]) 必须有小写英文*/
/** (?=.*[0-9]) 必须有数字*/
/** [a-zA-Z0-9] 有效字符范围*/
/** {8,16} 最少8个字符,最多16个字符*/[/color]
第一个成功版本
var tx3=/^(?=.{1}.{7})(?!.{1}.{16,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9]*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]{1}[A-Za-z0-9]*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]?[A-Za-z0-9]*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]?[A-Za-z0-9]*$/;
第二优化版本:
var tx3=/^(?=.{1}.{7})(?!.{1}.{16,})(?=.*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}])(?!.*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]{3,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]{8,16}$/;
优化最终版本:
var tx3=/^(?=.*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}])(?!.*[~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]{3,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~@#\$%\*_\-\+\=\:,\.\?\[\]\{\}]{8,16}$/;
weixin_46788091: 为什么从最顶级的节点查询 查询不到结果 大佬怎样解决
span__: 为什么已经设定了可以通过的特殊符号 但是 [ ] \这三个字符 依然可以通过验证
ctotalk: 不错,学习了。
weixin_42894530: 牛皮
weixin_43924871: 这个解决了我的问题,很有用!