如何使用 joi 模式在反应 js 中进行密码验证?

How to do Password validation in react js using joi schema?

我想验证密码规则为: 密码长度应为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 仅适用于节点 js。有什么帮助吗?

您可以尝试使用 Regex 并传入模式

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')