我正在尝试验证用户输入的密码。密码的最小长度应为4,并且应包含字符和数字。我正在使用Join-npm模块进行验证。
app.js代码:
const schema = Joi.object({
email: Joi.string().email().required(),
username: Joi.string().alphanum().min(3).required(),
password: Joi.string().min(4).required(),
});
app.post('/register',async (req,res)=>{
try{
const value = await schema.validateAsync({
email: req.body.email,
username: req.body.username,
password: req.body.password,
});
}catch(e){
console.log(e)}
})
如何检查用户密码中是否同时存在字符和数字?我没有在此处使用Regex表达式。有人能帮忙吗?
您可以使用alphanum()
password: Joi.string().min(4).alphanum().required()
结账https://joi.dev/api/?v=17.2.1#stringalphanum
Joi
.string()
.regex(/[0-9a-zA-Z]*d[0-9a-zA-Z]*/) // at least one digit in any position
.regex(/[0-9a-zA-Z]*[a-zA-Z][0-9a-zA-Z]*/) // at least one letter in any position
.min(4)
提示:
w
相当于javascript中的[0-9a-zA-Z_]
。所以,如果你想包括下划线,选择这个- 如果要包含所有可打印的符号,请选择以下内容:
[ -~]
(注意起始空格(
请改用confirmPassword: Joi.ref('password')
。