Ali*_*aie 6 javascript reactjs next.js yup formik
我有一个使用 React 和 next js 的项目。我使用 formik 来处理我的表单,是的,用于验证我有一个输入,我想对其执行一些验证。
这是我的架构
Yup.string()
.required("Requiredddd")
.matches(!/\d/, 'Wrongggg'),
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')Run Code Online (Sandbox Code Playgroud)
但在这种情况下,条件号 2 总是被认为是错误的。我认为 (!/\d/) 是错误的,但我不知道如何使用否定匹配函数
根据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')
Run Code Online (Sandbox Code Playgroud)
请参阅工作示例
小智 6
您可以使用 Yup 中的函数来完成此test()操作,如下所示:
.test('name Your Test here', 'your validation message', (value) => !yourRegex.test(value))
Run Code Online (Sandbox Code Playgroud)
我相信 Yup 应该提供相反的功能,.match()因为您并不总是想匹配,有时您想根据正则表达式测试您的值。