Cómo funciona el patrón
| Parte | Significado |
|---|---|
(?=.*[a-z]) | Lookahead: al menos una letra minúscula en algún punto |
(?=.*[A-Z]) | Al menos una letra mayúscula |
(?=.*\d) | Al menos un dígito |
(?=.*[^A-Za-z0-9]) | Al menos un símbolo |
.{8,} | Ocho o más caracteres en total |
Ejemplos de código
JavaScript
const re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}', value))PHP
preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', $value) === 1;
Notas y limitaciones
Cada lookahead comprueba una regla sin consumir caracteres, así que las reglas pueden aparecer en cualquier orden. La guía actual del NIST prefiere la longitud (15 o más caracteres) y la comprobación frente a contraseñas filtradas en lugar de las reglas de composición: considera una regla basada solo en la longitud, junto con un medidor de fortaleza. Genera una con el Generador de contraseñas.
Probador de expresiones regulares
Escribe un patrón y observa cómo se resaltan las coincidencias en tiempo real en tu texto de prueba.