¿Cuál es la expresión regular para asegurarse de que una cadena dada contiene al menos un carácter de cada una de las siguientes categorías?
- Minúscula
- Carácter en mayúscula
- Dígito
- Símbolo
Sé que las pautas de conjuntos individuales a saber [a-z]
, [A-Z]
, \d
y _|[^\w]
(me dieron a corregir, ¿verdad?).
Pero, ¿cómo los combino para asegurarme de que la cadena contiene todos estos en cualquier orden?
Respuestas:
Si necesita una única expresión regular, intente:
Una breve explicación:
Y estoy de acuerdo con SilentGhost,
\W
podría ser un poco amplio. Lo reemplazaría con un conjunto de caracteres como este:[-+_!@#$%^&*.,?]
(¡no dude en agregar más, por supuesto!)fuente
.+
en.*
? No pude encontrar un caso de prueba que falla.*
. ¿Son iguales en este contexto? "Cero o más caracteres" parece estar bien, solo busca confirmación..+
en.*
o incluso.{4,}
para el caso.^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[&%$]).{6,}$
Bart Kiers, tu expresión regular tiene un par de problemas. La mejor manera de hacerlo es esto:
De esta manera, está buscando sin importar si al principio, al final o en el medio. En tu tengo muchos problemas con contraseñas complejas.
fuente
Puede unir esos tres grupos por separado y asegurarse de que todos estén presentes. Además,
[^\w]
parece un poco demasiado amplio, pero si eso es lo que quieres, puedes reemplazarlo\W
.fuente
\W
y[\W]
resulta en lo mismo.