我有一个项目与React和下一个js。我用formik处理我的表单和是的验证,我有一个输入,我想执行一些验证。
1.此字段必须是必填字段,因此如果用户不输入任何信息,我将显示此消息=〉Required
1.此字段不应包含任何数字,否则显示此消息=〉Wrongggg
1.此字段必须仅包含波斯语字符,否则我显示此消息=〉仅波斯语字符
这是我的模式
Yup.string()
.required("Requiredddd")
.matches(!/\d/, 'Wrongggg'),
.matches(/^[\u0600-\u06FF\s]+$/, 'Only persian chars')
但在这种情况下,条件2总是被认为是错误的。我认为(!/\d/)是错误的,但我不知道如何使用匹配函数否定
2条答案
按热度按时间mspsb9vt1#
根据yup,您可以使用
.matches
的以下形状:string.matches(regex: Regex, message?: string | function): Schema
。如果你想验证字符串中不包含数字,你应该使用/\D+$/
而不是(!/\d/)
。参见working example
nc1teljy2#
您可以使用Yup中的
test()
函数执行此操作,如下所示:我认为Yup应该为
.match()
提供一个相反的函数,因为你不总是想匹配,有时你想用正则表达式测试你的值。