Buscar..


Una contraseña que contiene al menos 1 mayúscula, 1 minúscula, 1 dígito, 1 carácter especial y tiene una longitud de al menos 10

Como los caracteres / dígitos pueden estar en cualquier lugar dentro de la cadena, requerimos lookaheads. Lookaheads son de zero width lo que significa que no consumen ninguna cadena. En palabras simples, la posición de verificación se restablece a la posición original después de que se cumple cada condición de búsqueda anticipada.

Supuesto : - Considerar los caracteres sin palabras como especiales

^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$

Antes de continuar con la explicación, veamos cómo funciona la expresión regular ^(?=.*[az]) (la longitud no se considera aquí ) en la cadena 1$d%aA

introduzca la descripción de la imagen aquí

Crédito de la imagen : - https://regex101.com/

Cosas para notar

  • La comprobación se inicia desde el principio de la cadena debido a la etiqueta de anclaje ^ .
  • La posición de verificación se restablece al inicio después de que se cumpla la condición de búsqueda anticipada.

Desglose regex

^ #Starting of string
 (?=.{10,}$) #Check there is at least 10 characters in the string. 
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[a-z]) #Check if there is at least one lowercase in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[A-Z]) #Check if there is at least one uppercase in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[0-9]) #Check if there is at least one digit in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*\W) #Check if there is at least one special character in string.
          #As this is lookahead the position of checking will reset to starting again
.*$ #Capture the entire string if all the condition of lookahead is met. This is not required if only validation is needed

También podemos usar la versión no codiciosa de la expresión regular anterior.

^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$

Una contraseña que contiene al menos 2 mayúsculas, 1 minúscula, 2 dígitos y tiene una longitud de al menos 10

Esto se puede hacer con un poco de modificación en la expresión regular anterior.

 ^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$

o

 ^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*

Veamos cómo funciona una expresión regular ^(?=(?:.*?[AZ]){2}) en la cadena abcAdefD

introduzca la descripción de la imagen aquí

Crédito de la imagen : - https://regex101.com/



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow