test - RegEx para asegurarse de que la cadena contiene al menos un carácter en minúscula, mayúscula, dígito y símbolo
probar expresiones regulares (3)
Bart Kiers, tu expresión regular tiene un par de problemas. La mejor manera de hacerlo es esto:
(.*[a-z].*) // For lower cases
(.*[A-Z].*) // For upper cases
(.*/d.*) // For digits
De esta manera estás buscando no importa si al principio, al final o en el medio. En tu caso tengo muchos problemas con contraseñas complejas.
¿Cuál es la expresión regular para asegurarse de que una cadena dada contenga al menos un carácter de cada una de las siguientes categorías.
- Minúscula
- Carácter mayúsculo
- Dígito
- Símbolo
Conozco los patrones para conjuntos individuales, a saber [az]
, [AZ]
, /d
y _|[^/w]
(los entendí correctamente, ¿verdad?).
Pero, ¿cómo los combino para asegurarme de que la cadena contiene todos estos en cualquier orden?
Puede unir esos tres grupos por separado y asegurarse de que todos estén presentes. Además, [^/w]
parece demasiado amplio, pero si eso es lo que desea, puede reemplazarlo por /W
Si necesita una sola expresión regular, intente:
^(?=.*[a-z])(?=.*[A-Z])(?=.*/d)(?=.*(_|[^/w])).+$
Una breve explicación:
^ // the start of the string
(?=.*[a-z]) // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z]) // use positive look ahead to see if at least one upper case letter exists
(?=.*/d) // use positive look ahead to see if at least one digit exists
(?=.*[_/W]) // use positive look ahead to see if at least one underscore or non-word character exists
.+ // gobble up the entire string
$ // the end of the string
Y estoy de acuerdo con SilentGhost, [_/W]
podría ser un poco amplio. Lo reemplazaría con un juego de caracteres como este: [-+_!@#$%^&*.,?]
(¡Siéntase libre de agregar más, por supuesto!)