1
respuesta

regex para validar credencial

trate de hacer mas elaborado el codigo del profesor agregandole un regex que encontre en stackoverflow, pero a la hora de validar mi contra, me dice que no es valida aunque si cumpla los criterios

  const [password, setPassword] = useState({ value: "superStr0ng!P@ssw0rd!", valid: true });
export function passwordValidation(password) {
    const length = password.length;
    const pwCriteria = " ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).$ "

    if (length > 7 && password.includes(pwCriteria) ){
        console.log(password, ` is valide`)
    } else {
        console.log(password, ` is not valide`)
    }
}```

Saben porque es? Aqui esta la captura Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Melany,

El problema que estás experimentando se debe a que estás utilizando la función includes() para verificar si la contraseña cumple con la expresión regular. La función includes() busca una cadena de texto exacta dentro de otra cadena de texto, no una coincidencia de patrón como lo hace una expresión regular.

Para que tu código funcione correctamente, debes usar el método test() de la expresión regular. Aquí te dejo un ejemplo de cómo debería ser tu código:

export function passwordValidation(password) {
    const length = password.length;
    const pwCriteria = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z]).$");

    if (length > 7 && pwCriteria.test(password)){
        console.log(password, ` es válida`)
    } else {
        console.log(password, ` no es válida`)
    }
}

En este código, primero creo un objeto RegExp a partir de tu cadena de texto de la expresión regular. Luego, uso el método test() de este objeto para verificar si la contraseña cumple con los criterios.

Espero que esto resuelva tu problema. Recuerda que las expresiones regulares pueden ser un poco complicadas al principio, pero con práctica se vuelven una herramienta muy poderosa.

¡Saludos!

Si este post te ayudó, por favor marca como solucionado ✓. ¡Continúa con tus estudios!