使用正则表达式设置强密码
例子和解析
强密码需要同时含有大写字母、小写字母、数字、特殊符号。
这边先展示我自己写的。
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%?])[a-zA-Z0-9!@#$%?_]{8,}$
以上代8位以上的强密码。
下面是具体解析:
^代表开始
$代表结尾
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%?])这四个是对字符进行判定
(?=.*[a-z])判断小写字母是否存在
(?=.*[a-z])判断大写字母是否存在
(?=.*[0-9])判断数字是否存在
(?=.*[!@#$%?])判断特殊字符是否存在,特殊字符可以自行添加
[a-zA-Z0-9!@#$%?_]{8,}代表要从[]内的字符中任取一个,共8位
[]是取一个 ()是都要满足 {}是取几位
最小位数必填,最大位数可不填,我的例子里只有最小位数为8
测试工具
正则表达式测试工具里可以自行检测写的对不对
Java中的应用
目前较为简便的一种使用方法是搭配ApiModel和Pattern对变量进行配置。
如
@ApiModel(value="User" description="用户对象")
public class User{
@Pattern(regexp = "^(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%?])[a-zA-Z0-9!@#$%?_]{8,}$")
private String pwd;
}
前端vue的reactive中使用
{pattern: '^(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%?])[a-zA-Z0-9!@#$%?_]{8,}$', message:'密码包含大写字母、小写字母、数字、特殊字符', trigger: 'blur'}