Saltar al contenido

Expresión regular para verificar si la contraseña es “8 caracteres, incluida 1 letra mayúscula, 1 carácter especial, caracteres alfanuméricos”

Te recomendamos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

Lo más probable es que la expresión regular que busca sea enorme y una pesadilla de mantener, especialmente para las personas que no están tan familiarizadas con las expresiones regulares.

Creo que sería más fácil dividir la expresión regular y hacerlo poco a poco. Puede tomar un poco más de tiempo, pero estoy bastante seguro de que mantenerlo y depurarlo sería más fácil. Esto también le permitiría proporcionar más mensajes de error dirigidos a sus usuarios (aparte de solo Invalid Password) que debería mejorar la experiencia del usuario.

Por lo que estoy viendo, eres bastante fluido en expresiones regulares, por lo que supongo que darte las expresiones regulares para hacer lo que necesitas sería inútil.

Al ver tu comentario, así es como lo haría:

  • Debe tener ocho caracteres Largo: no necesita una expresión regular para esto. Utilizando el .Length la propiedad debería ser suficiente.

  • Incluyendo una letra mayúscula: Puede utilizar el [A-Z]+ expresión regular. Si el string contiene al menos una letra mayúscula, esta expresión regular producirá true.

  • Un carácter especial: puede usar el W que coincidirá con cualquier carácter que no sea una letra o un número o, de lo contrario, puede usar algo así [[email protected]#] para especificar una lista personalizada de caracteres especiales. Sin embargo, tenga en cuenta que personajes como $, ^, ( y ) son caracteres especiales en el lenguaje de expresiones regulares, por lo que deben escaparse así: $. Así que en resumen, podrías usar el W.

  • Caracteres alfanuméricos: Usando el w+ debe coincidir con cualquier letra y número y guión bajo.

Echa un vistazo a este tutorial para obtener más información.

(                   # Start of group
    (?=.*d)        #   must contain at least one digit
    (?=.*[A-Z])     #   must contain at least one uppercase character
    (?=.*W)        #   must contain at least one special symbol
       .            #     match anything with previous condition checking
         8,8      #        length is exactly 8 characters
)                   # End of group

En una línea:

((?=.*d)(?=.*[A-Z])(?=.*W).8,8)

Editar 2019-05-28:

Necesitas hacer coincidir toda la entrada string. Por lo tanto, puede encerrar la expresión regular entre ^ y $ para evitar asumir accidentalmente coincidencias parciales como coincidencias de entrada completa:

^((?=.*d)(?=.*[A-Z])(?=.*W).8,8)$

Fuentes:

  • Expresión de coincidencia de contraseña

  • Validación de seguridad de contraseña con expresiones regulares

Tantas respuestas…. ¡todas malas!

Las expresiones regulares no tienen un operador AND, por lo que es bastante difícil escribir una expresión regular que coincida con contraseñas válidas, cuando la validez está definida por algo Y algo más Y algo más…

Pero las expresiones regulares hacer tiene un operador OR, así que solo aplique el teorema de DeMorgan y escriba una expresión regular que coincida inválido contraseñas

cualquier cosa con menos de 8 caracteres O cualquier cosa sin números O cualquier cosa sin mayúsculas O cualquier cosa sin caracteres especiales

Entonces:

^(.0,7|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$

Si algo coincide con eso, entonces es un inválido clave.

Aquí puedes ver las comentarios y valoraciones de los lectores

Si aceptas, tienes la libertad de dejar un enunciado acerca de qué te ha impresionado de este post.

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


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

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