Como o padrão funciona
| Parte | Significado |
|---|---|
(?=.*[a-z]) | Lookahead: pelo menos uma letra minúscula em algum ponto |
(?=.*[A-Z]) | Pelo menos uma letra maiúscula |
(?=.*\d) | Pelo menos um dígito |
(?=.*[^A-Za-z0-9]) | Pelo menos um símbolo |
.{8,} | Oito ou mais caracteres no total |
Exemplos 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;
Observações e limitações
Cada lookahead verifica uma regra sem consumir caracteres, então as regras podem aparecer em qualquer ordem. A orientação atual do NIST favorece tamanho (15+ caracteres) e verificação contra senhas vazadas em vez de regras de composição — considere uma regra apenas de tamanho mais um medidor de força. Gere uma com o Gerador de Senhas.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.