如何使用 YUP 中的验证器 #1 或验证器 #2 检查字段是否有效

How to check if field is valid with validator #1 OR validator #2 in YUP

我需要检查字段是否包含 phone 号码或电子邮件。

像这样:

const phoneOrEmailValidationSchema = Yup.object().shape({
  phoneOrEmail: Yup.string()
    .oneOfValidators(
      [Yup.string().email(), Yup.string().min(5)],
      "must be phone or email"
    )
    .required("Required phoneOrEmail"),
});

可以用 YUP 做吗?

const phoneOrEmailValidationSchema = Yup.object().shape({
  phoneOrEmail: Yup.lazy((value) => {
    if (value.indexOf("@") === -1) {
      return Yup.string().min(5);
    }
    return Yup.string().email();
  }),
});

如果您可以在 运行 时确定对 运行 进行哪个验证,则可以使用此方法。如果您无法确定对 运行.

进行哪个验证,则不确定您将如何执行此操作