是的,在匹配函数中使用 not(!) 时验证不起作用
Yup validation not work when use not(!) in matches function
我有一个使用 React 和 next js 的项目。我使用 formik 处理我的表单,使用 Yup 进行验证
我有一个输入,我想对其进行一些验证。
- 此字段必须为必填项,因此如果用户未输入任何信息,我会显示此消息 => 必填项
- 此字段不应包含任何数字,否则我将显示此消息 => Wrongggg
- 此字段只能包含波斯字符,否则我显示此消息 => 仅包含波斯字符
这是我的架构
Yup.string()
.required("Requiredddd")
.matches(!/\d/, 'Wrongggg'),
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')
但在这种情况下,条件号 2 始终被考虑 wrong.i 认为 (!/\d/) 是错误的,但我不知道如何使用匹配函数 Negatively
根据 yup,您可以使用 .matches
使用此形状:
string.matches(regex: Regex, message?: string | function): Schema
。如果你想验证字符串不包含数字,而不是使用 (!/\d/)
你应该使用 /\D+$/
.
Yup.string()
.required("Requiredddd")
.matches(/\D+$/, 'Wrongggg')
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')
我有一个使用 React 和 next js 的项目。我使用 formik 处理我的表单,使用 Yup 进行验证 我有一个输入,我想对其进行一些验证。
- 此字段必须为必填项,因此如果用户未输入任何信息,我会显示此消息 => 必填项
- 此字段不应包含任何数字,否则我将显示此消息 => Wrongggg
- 此字段只能包含波斯字符,否则我显示此消息 => 仅包含波斯字符 这是我的架构
Yup.string()
.required("Requiredddd")
.matches(!/\d/, 'Wrongggg'),
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')
但在这种情况下,条件号 2 始终被考虑 wrong.i 认为 (!/\d/) 是错误的,但我不知道如何使用匹配函数 Negatively
根据 yup,您可以使用 .matches
使用此形状:
string.matches(regex: Regex, message?: string | function): Schema
。如果你想验证字符串不包含数字,而不是使用 (!/\d/)
你应该使用 /\D+$/
.
Yup.string()
.required("Requiredddd")
.matches(/\D+$/, 'Wrongggg')
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')