Yup条件最大长度验证一个字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yup条件最大长度验证一个字段相关的知识,希望对你有一定的参考价值。
我一直在努力使用Yup为一个文本字段编写验证器。如果用户输入的字符串包含“-”,则该字段的最大长度应为10。如果没有“-”,则最大长度应为9。
现在,代码看起来像这样:
export default Yup.object().shape(
description: Yup.string()
.required('Description is required')
.matches(
/^[a-zA-Z0-9-]*$/,
'Description can only contain letters, numbers and dashes'
)
.max(10, 'Description has a max length of 10 characters'),
invoiceDate: Yup.date()
.nullable()
.required('Invoice Date is required'),
);
条件验证应应用于描述字段。
答案
您应该在“ yup”中使用“ when”:
description: Yup.string()
.when("any",
is: val => /-/.test(Yup.ref("description")),
then: Yup.string()
.required('Description is required')
.matches(/^[a-zA-Z0-9-]*$/,
'Description can only contain letters, numbers and dashes'
)
.max(10, 'Description has a max length of 10 characters')
otherwise: Yup.string()
.required('Description is required')
.matches(/^[a-zA-Z0-9-]*$/,
'Description can only contain letters, numbers and dashes'
)
.max(9, 'Description has a max length of 9 characters')
)
我希望它对您有用。
以上是关于Yup条件最大长度验证一个字段的主要内容,如果未能解决你的问题,请参考以下文章