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
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:
(?<=\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:
Puedes probar esta expresión regular utilizando el enlace proporcionado: https://regex101.com/r/E418tG/2