是的,Formik使用.match()



password: Yup.string()。("请输入密码").matches (/^ (? =, d)(? =。[! @ # $ % ^,])(? =。[a - z]) (? = * [a - z])。{8}/美元,"测试").required("密码required"

这里有人知道为什么。matches不会带回错误消息吗?我真的不想为我们想要满足的每个条件运行一堆。test()。

似乎这是Yup的一个持续的问题,并且我们在代码中设置它的工作方式没有意义

我得到所需的消息返回良好,但我希望。match()中的消息显示,如果它不满足

const formik = useFormik({
initialValues: { username: '', password: '', firstName: '', lastName: '' },
onSubmit: (values) => {
dispatch(checkLogin({
username: values.username,
password: values.password
}, async () => {
return await router.push("/");
}));
setSubmitted(true);
},
validationSchema: Yup.object({
username: Yup.string().email("Must be a valid email").required("Email is 
required"),
password: Yup.string().required('Please Enter your password').matches(/^(? 
=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/, 'test').required("Password is 
required"),
firstName: Yup.string().matches(/^([^0-9]*)$/).required("First name is 
required"),
lasstName: Yup.string().matches(/^([^0-9]*)$/).required("First name if 
required")
}),
});

原来你的regex有一些不必要的空格。删除它,它应该工作。

您有两个必需的检查,尝试删除一个,它应该工作

password: Yup.string()
.required('Please Enter your password')
.matches(/^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/, 'test')

此外,您似乎需要添加.shapehttps://github.com/jquense/yup#objectshapefields-object-nosortedges-arraystring-string-schema

Yup.object().shape({})

最新更新