【问题标题】:Can we add custom validations in formik YupValidationSchema?我们可以在 formik YupValidationSchema 中添加自定义验证吗?
【发布时间】:2021-09-10 01:42:39
【问题描述】:

我们可以在下面提到的 formik YupValidationSchema 中添加自定义验证吗?

YupValidationSchema = () => {
        return Yup.object({
             Email: Yup.string()
            .max(256, "Length exceed 256 chars")
            .matches(EMAIL_REGEXP, "Enter a valid email address")
            .required("Email is required")
})
}

我需要为电子邮件字段再添加一项验证,例如它应该接受某些域

let domainVal = companyName.some((val) => email.includes(val));
     if(!domainVal) error('Invalid')
     else  success('Valid');

谁能帮我在 yupvalidationschema 中添加这个域验证代码?

【问题讨论】:

    标签: javascript reactjs formik yup


    【解决方案1】:

    您可以使用Yup test method 为您的电子邮件添加自定义验证

    基本语法:.test("test-name", "Error message", function)

    return Yup.object({
                 Email: Yup.string()
                .max(256, "Length exceed 256 chars")
                .matches(EMAIL_REGEXP, "Enter a valid email address")
                .required("Email is required")
                .test("email-include-domain", "Email Must include domain", (value) => companyName.some((val) => value.includes(val));
    

    相关 Stackoverflow 帖子:How to get Yup to perform more than one custom validation?

    【讨论】:

    • 当该字段为空时,我应该得到“需要电子邮件”而不是我得到同样的错误“电子邮件必须包含域”??
    • 似乎无法保证验证的顺序,因为 Yup 操作并行运行。在这里查看:github.com/jquense/yup/issues/256
    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多