La fórmula regex para la contraseña debe contener al menos ocho caracteres, al menos un número y tanto letras minúsculas como mayúsculas y caracteres especiales

Quiero una expresión regular para comprobarlo:

Una contraseña contiene al menos ocho caracteres, incluyendo al menos un número e incluye tanto letras minúsculas como mayúsculas y caracteres especiales, por ejemplo #, ?, !.

No puede ser su antigua contraseña ni contener su nombre de usuario, "contraseña"o"nombre del sitio web".

Y aquí está mi expresión de validación que es para ocho caracteres incluyendo una letra mayúscula, una letra minúscula y un número o carácter especial.

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

¿Cómo puedo escribirla para una contraseña debe tener ocho caracteres, incluyendo una letra mayúscula, un carácter especial y caracteres alfanuméricos?

Mínimo ocho caracteres, al menos una letra y un número:

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

Mínimo ocho caracteres, al menos una letra, un número y un carácter especial:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"

Mínimo ocho caracteres, al menos una letra mayúscula, una minúscula y un número:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

Mínimo ocho caracteres, al menos una letra mayúscula, una letra minúscula, un número y un carácter especial:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"

Mínimo ocho y máximo 10 caracteres, al menos una letra mayúscula, una letra minúscula, un número y un carácter especial:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
Comentarios (22)

Puede utilizar esta regex con múltiples aserciones (condiciones) de búsqueda:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$

Esta regex aplicará estas reglas:

  • Al menos una letra mayúscula inglesa, (?=.*?[A-Z])
  • Al menos una letra inglesa minúscula, (?=.*?[a-z]).
  • Al menos un dígito, (?=.*?[0-9])
  • Al menos un carácter especial, (?=.*?[#?!@$%^&*-])
  • Un mínimo de ocho de longitud .{8,} (con las anclas)
Comentarios (36)

Sólo una pequeña mejora para la respuesta de @anubhava': Ya que los caracteres especiales están limitados a los del teclado, usa esto para cualquier carácter especial:

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

Esta regex aplicará estas reglas:

  • Al menos una letra inglesa en mayúscula
  • Al menos una letra inglesa minúscula
  • Al menos un dígito
  • Al menos un carácter especial
  • Un mínimo de ocho caracteres
Comentarios (3)