如何使用 joi 架构在 react js 中进行密码验证?

问题描述

我想验证密码规则为: 密码长度为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')