首页 > 解决方案 > 如何使用 YUP 中的验证器 #1 或验证器 #2 检查字段是否有效

问题描述

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

像这样的东西:

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可以做到吗?

标签: yup

解决方案


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

如果您可以在运行时确定要运行哪个验证,则可以使用此方法。如果您无法确定要运行哪个验证,则不确定如何执行此操作。


推荐阅读