3
respuestas

Error en la cadena Regex

Buenas noches, estoy realizando lo que se realizo en la clase de Validación de Contraseñas, pero al momento de correo el código y capturar una contraseña que cumple con las restricciones, se muestra el siguiente mensaje:

validaciones.js:7 Pattern attribute value ^(?=.[a-z])(?=.[A-Z])(?=.[0-9])(?!.[ !@#$%^&_=+-]).{6,12}$ is valid with the RegExp u flag, but not with the v flag: Uncaught SyntaxError: Invalid regular expression: /^(?=.[a-z])(?=.[A-Z])(?=.[0-9])(?!.[ !@#$%^&_=+-]).{6,12}$/v: Invalid character in character class. See https://crbug.com/1412729. Les comparto el código que se realizó:

                    <div class="input-container">
                        <input name="password" id="password" class="input" type="password" placeholder="Contraseña" required pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[ !@#$%^&*_=+-]).{6,12}$" title="Al menos 6 caracteres, máximo 12, debe contener una letra minúscula, 1 mayúscula, un número y no debe contener caracteres especiales.">
                        <label class="input-label" for="password">Contraseña</label>
                        <span class="input-message-error">Este campo no es valido</span>

Sin más por el momento, agradezco su ayuda. Bonita noche :)

3 respuestas

Hola. Probaste agregando * despues de cada punto? de esa manera le indicas de que tiene que tener al menos uno de esos caracteres. Por ej: ^(?=.*[a-z])

Hola Kevin, muchas gracias, en el código si tengo agregado el * después de cada, punto; intente con la herramientoa regexr.com e indica que la cadena es correcta, no termino de entender cual es el error; De acuerdo con lo que indica dice que es un error en la sintaxis. Sin embargo, en la parte superior indica que el error estar en el archivo validaciones.js:7. Al revisar el código en esa línea se tiene:

 if (input.validity.valid) {
        input.parentElement.classList.remove("input-container--invalid");
        input.parentElement.querySelector(".input-message-error").innerHTML = "";
      } else {
        input.parentElement.classList.add("input-container--invalid");
        input.parentElement.querySelector(".input-message-error").innerHTML =
          mostrarMensajeDeError(tipoDeInput, input);
      }
    }

De hecho descargue el archivo que nos pasan en la nueva clase y el que hace el profesor también presenta el mismo error. De antemano, muchas gracias Kevin.

Tu código parece estar bien, tanto el regex como el código js que proporcionas . Podría ser que la función mostrarMensajeDeError() sea la que genere el problema. Habría que revisarla. Por otra parte, puedes probar modificar tu pattern por este:

`^(?=\p{Ll})(?=\p{Lu})(?=\p{N})(?![ !@#$%^&_=+-]).{6,12}$

`

En este caso se reemplazan los caracteres que defines por sus propiedades Unicode. Una última opción sería probar con otro navegador. Saludos y éxitos!