是的和 Formik 用法 .match()
Yup and Formik usage .match()
密码:Yup.string().required('Please Enter your password').matches(/^(?=.\d)(?=.[ !@#$%^&])(?=.[a-z])(?=.*[A-Z]).{8,}$/, 'test') .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")
}),
});
原来你的正则表达式有一些不需要的间距。删除它,它应该可以工作。
您有两个必需的检查,尝试删除一个,它应该可以工作
password: Yup.string()
.required('Please Enter your password')
.matches(/^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/, 'test')
此外,您似乎需要添加 .shape
https://github.com/jquense/yup#objectshapefields-object-nosortedges-arraystring-string-schema
Yup.object().shape({})
密码:Yup.string().required('Please Enter your password').matches(/^(?=.\d)(?=.[ !@#$%^&])(?=.[a-z])(?=.*[A-Z]).{8,}$/, 'test') .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")
}),
});
原来你的正则表达式有一些不需要的间距。删除它,它应该可以工作。
您有两个必需的检查,尝试删除一个,它应该可以工作
password: Yup.string()
.required('Please Enter your password')
.matches(/^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/, 'test')
此外,您似乎需要添加 .shape
https://github.com/jquense/yup#objectshapefields-object-nosortedges-arraystring-string-schema
Yup.object().shape({})