O que você precisa decidir antes do padrão
CEP é um ótimo caso para Regex porque a regra de formato é pequena: cinco dígitos, hífen opcional conforme sua interface e três dígitos finais.
Pense no problema antes de escrever Regex
Um padrão fica mais simples quando a regra já está clara. Para este caso, siga esta sequência:
- 01Defina se o hífen será obrigatório ou opcional.
- 02Use âncoras para impedir letras ou números adicionais.
- 03Se aceitar formatos diferentes, normalize o valor antes de consultar APIs ou persistir.
CEP formatado
^\d{5}-\d{3}$Exemplos: 41810-000 e 01310-100. O hífen é literal e não precisa de escape fora de uma classe.
Aceitar com ou sem hífen
^\d{5}-?\d{3}$O ? torna o hífen opcional. Isso pode ser útil na entrada, mas prefira normalizar o valor antes de gravar.
Regex não confirma existência
99999-999 possui o formato correto, mas você ainda precisa consultar uma fonte de endereços quando o requisito for confirmar se o CEP existe.
Uso em formulário
No frontend, mostre a máscara sem obrigar o usuário a digitar pontuação manualmente. No backend, remova caracteres decorativos e valide os oito dígitos antes de consultar serviços externos.
Como ler o padrão em partes
Em vez de memorizar a expressão inteira, leia cada bloco pela responsabilidade que ele cumpre:
\d{5}captura exatamente os cinco primeiros números.-?quando usado, torna o hífen opcional sem duplicar todo o padrão.\d{3}captura os três números finais.^ ... $faz a expressão representar o campo inteiro.Onde Regex agrega valor aqui
É apropriado para formulário, máscara, limpeza de dados e busca textual. Para saber se o CEP existe, consulte uma fonte de endereços.
Erros comuns
- Aceitar qualquer sequência de oito dígitos sem pensar no formato apresentado ao usuário.
- Confundir formato de CEP com confirmação de que o endereço existe.
- Salvar versões com e sem hífen e depois comparar strings diretamente.
Teste e pratique
Use o Playground para experimentar o padrão com seus próprios dados e depois leve o conceito para as fases do jogo, onde os casos positivos e negativos são avaliados automaticamente.