问题描述
我想验证密码规则为: 密码长度为8个字符,1个大写1个小写,1个数字和1个特殊字符。
password: new passwordComplexity({
min: 8,max: 25,lowerCase: 1,upperCase: 1,numeric: 1,symbol: 1,}),password: Joi.string()
.min(8)
.max(25)
.required()
.label("Password")
.error((errors) => {
errors.forEach((err) => {
switch (err.type) {
case "any.empty":
err.message = passwordrequired;
break;
case "string.min":
err.message = passwordInvalid;
break;
case "string.max":
err.message = passwordInvalidMax;
break;
default:
}
});
return errors;
}),
我尝试了这些,但是 passwordComplexity 我猜只适用于 node js。对此有什么帮助吗?
解决方法
您可以尝试使用正则表达式并传入模式
Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$'))
有关如何使用 Regex 的更多信息:https://regexone.com/
,谢谢你的帮助。但是,我找到了一个解决方案:
password: Joi.string()
.min(8)
.max(25)
.regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,'password')