Reactjs 如何根据区域设置使用Formik和Yup设置不同的密码要求?

Reactjs 如何根据区域设置使用Formik和Yup设置不同的密码要求?,reactjs,formik,yup,Reactjs,Formik,Yup,我正在处理一个网站,我有不同的密码要求取决于国家,谁能帮我解决这个问题,请?这就是我到目前为止所取得的进展,但它仍然只需要6个字符,其他什么都不需要 password: Yup.string() .when({ is: locale => locale === 'mt', then: Yup.string().matches( /^(?=.*[A-

我正在处理一个网站,我有不同的密码要求取决于国家,谁能帮我解决这个问题,请?这就是我到目前为止所取得的进展,但它仍然只需要6个字符,其他什么都不需要

        password: Yup.string()
            .when({
                is: locale => locale === 'mt',
                then: Yup.string().matches(
                    /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/,
                    'Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and one special case Character'
                ),
                otherwise: Yup.string().min(6, 'Must containt at least 6 characters')
            })
            .required(intl.formatMessage({ id: 'inputs.password.required' }))
    }); 

locale是在url中设置的国家/地区。它可以正确地获取语言环境。

您不能使用这样的东西吗:

password:locale=='mt'?
Yup.string().匹配(/^(?=.[A-Za-z])(?=.*\d)(?=.[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/,
'必须包含8个字符,一个大写、一个小写、一个数字和一个特殊大小写字符'
):Yup.string().min(6,‘必须至少包含6个字符’)

是!当然工作得很有魅力!非常感谢。