是的,在匹配函数中使用 not(!) 时验证不起作用

Yup validation not work when use not(!) in matches function

我有一个使用 React 和 next js 的项目。我使用 formik 处理我的表单,使用 Yup 进行验证 我有一个输入,我想对其进行一些验证。

  1. 此字段必须为必填项,因此如果用户未输入任何信息,我会显示此消息 => 必填项
  2. 此字段不应包含任何数字,否则我将显示此消息 => Wrongggg
  3. 此字段只能包含波斯字符,否则我显示此消息 => 仅包含波斯字符 这是我的架构

 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')

working example