es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Expresión regular para encontrar secuencias repetitivas de 4 o más letras minúsculas y que requiere al menos 2 números, caracteres especiales y letras mayúsculas.

Estoy creando una expresión regular para contraseñas seguras y tengo problemas para juntar los requisitos. Estos son:

  • 2 o más letras mayúsculas
  • 2 o más dígitos
  • 2 o más caracteres especiales
  • Exactamente 15 caracteres
  • No más de 4 letras minúsculas seguidas que no necesitan repetirse (es decir, abef)
  • Puede comenzar con cualquier caracter, pero requiere espacios en blanco a ambos lados

Comencé con una entrada de biblioteca de regex101 para encontrar los caracteres que se repiten 2 o más veces, pero no puedo entender cómo identificar las minúsculas repetidas que no necesitan ser el mismo carácter minúsculo, el requisito de dígito/mayúscula/especial no se mantiene dentro del grupo de caracteres y no permite que comience con un caracter especial.

Para las letras minúsculas repetidas, pensé que usar una búsqueda negativa hacia adelante o hacia atrás como alguna de estas opciones podría funcionar, pero no lo hace:

(?!.*[a-z]{4,})
(?<![a-z])[a-z]{4,}(?![a-z])

No puedo ver dónde en la expresión regular completa ocurre el problema de comenzar con un carácter especial o verificar más allá del grupo de captura.

Aquí está lo que tengo hasta ahora para la expresión regular completa sin incluir el requisito de minúsculas repetidas:
\b(?=(?:.[A-Z]){2,})(?=(?:.[a-z]){2,})(?=(?:.\d){2,})(?=(?:.[!@#$%^&()-_=+{};:,.><][]){2,})([A-Za-z0-9!#$@%^&()-_=+{};:,.><][]{15})(?!\S)

Enlace a https://regex101.com/r/E418tG/1

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para crear una expresión regular para contraseñas seguras

    Para crear una expresión regular que cumpla con los requisitos mencionados, se deben realizar los siguientes cambios en el código de la expresión regular actual:

    • Para incluir caracteres especiales en la contraseña, agrégalos al grupo de caracteres dentro de la expresión regular.
    • Para limitar las letras minúsculas a no más de 4 seguidas, utiliza una búsqueda negativa hacia adelante que no permita 4 letras minúsculas seguidas.
    • Para permitir que la contraseña empiece con un carácter especial y tenga espacios en blanco a ambos lados, utiliza (?<=\s) para coincidir con los espacios en blanco que van antes de la contraseña y (?=\s) para coincidir con el espacio en blanco que va después de la contraseña.

    A continuación se muestra la expresión regular actualizada que cumple con todos los requisitos:

    (?<=\s)?(?=(?:.*[A-Z]){2,})(?=(?:(?:(?![a-z][a-z][a-z][a-z])[a-z])+))(?=(?:.*\d){2,})(?=(?:.*[!@#$%^&*()\-_=+{};:,.>\[\]]){2,})([A-Za-z\d!@#$%^&*()\-_=+{};:,.>\[\]]{15})(?=\s)
    

    Puedes probar esta expresión regular utilizando el enlace proporcionado: https://regex101.com/r/E418tG/2

Comments are closed.