Saltar al contenido

Formik, sí, validación de la fuerza de la contraseña con React

Te recomendamos que pruebes esta respuesta en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

Debe pasar un objeto RegExp real a matchesNo un string. Simplemente reemplace las comillas dobles con barras diagonales en su esquema de contraseña:

password: yup
    .string()
    .required('Please Enter your password')
    .matches(
      /^(?=.*[A-Za-z])(?=.*d)(?=.*[@$!%*#?&])[A-Za-z[email protected]$!%*#?&]8,$/,
      "Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and one special case Character"
    ),

Esto es lo que finalmente me puse a trabajar.

 password: Yup.string()
          .required('Please Enter your password')
          .matches(

            /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]#$%^&*])(?=.8,)/,
            "Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character"
          ),

Tomé esta expresión regular string de este artículo: https://www.thepolyglotdeveloper.com/2015/05/use-regex-to-test-password-strength-in-javascript/

Bien, después de un par de horas de jugar, decidí hacer mi propia validación personalizada.

Aquí esta lo que hice :-

password: yup
    .string()
    .required("Please Enter your password")
    .test(
      "regex",
      "Password must be min 8 characters, and have 1 Special Character, 1 Uppercase, 1 Number and 1 Lowercase",
      val => 
        let regExp = new RegExp(
          "^(?=.*\d)(?=.*[[email protected]#$%^&*])(?=.*[a-z])(?=.*[A-Z]).8,$"
        );
        console.log(regExp.test(val), regExp, val);
        return regExp.test(val);
      
    )

Por ahora, esto está funcionando bien. Pero realmente me gustaría saber por qué aparece el error. Publíquelo como una respuesta si puede encontrar una solución, y si funciona para mí, lo marcaré como la respuesta correcta. Gracias.

Nos puedes añadir valor a nuestro contenido informacional añadiendo tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *