NodeJS 使用Joi进行密码验证

igsr9ssn  于 2023-04-05  发布在  Node.js
关注(0)|答案(3)|浏览(182)

我正在尝试验证用户输入的密码。密码的最小长度应为4,并且应包含字符和数字。我正在使用Joi 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表达式,有人能帮忙吗?

xzabzqsa

xzabzqsa1#

您可以使用alphanum()
password: Joi.string().min(4).alphanum().required()
请访问https://joi.dev/api/?v=17.2.1#stringalphanum

68bkxrlz

68bkxrlz2#

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_]。所以如果你想包含下划线,选择这个。
  • 如果要包括所有可打印符号,请选择以下选项:[ -~] . (注意开头的空格)
7uhlpewt

7uhlpewt3#

请改用confirmPassword: Joi.ref('password')

相关问题