Validador de CEP por Faixa
Identifica a região aproximada do Brasil a partir dos 2 primeiros dígitos do CEP (01-09 = SP capital, 20-28 = RJ, 60-63 = CE etc.).
O CEP legado de 5 dígitos e a migração de 1992 para 8 dígitos
O CEP (Código de Enderecamento Postal) e o código postal brasileiro mantido pelos Correios. Criado em 1971 como código de 5 dígitos cobrindo regiões amplas, foi redesenhado em 1992 para o formato moderno 8 dígitos XXXXX-XXX, capaz de codificar a granularidade de logradouro nos grandes centros urbanos. Esta ferramenta e dedicada ao problema de diagnostico e conversão que ainda aparece em ERPs antigos, documentos escaneados e bases históricas: como tratar CEPs no formato antigo e como (ou se) elevar ao padrão atual.
A migração não foi simples padding. Os primeiros 5 dígitos do formato novo não coincidem com o código antigo em todos os casos: muitos centros municipais foram recodificados para liberar faixas para novos bairros, agencias e grandes usuários. Os Correios publicaram uma tabela de equivalência a época, mas hoje so esta disponível no produto comercial DNE (Diretorio Nacional de Endereços), não nas consultas gratuitas do ViaCEP/BrasilAPI.
Regras de detecção e validação
Um validador legado robusto deve distinguir três casos e aplicar regras distintas a cada um:
- Exatamente 5 dígitos (
^\d{5}$): formato pre-1992. Válido apenas como referência histórica. - Exatamente 7 dígitos: geralmente erro de digitação ou zero a esquerda perdido em CEP de 8 dígitos. A ferramenta sinaliza como provavelmente inválido e sugere prefixar com zero.
- Exatamente 8 dígitos (
^\d{5}-?\d{3}$): padrão atual. Formato válido.
Para validação puramente de formato (sem consulta DNE), esta regex basta: ^\d{5}-?\d{3}$. Para capturar o caso legado explicitamente: ^(\d{5})(-?\d{3})?$, onde o segundo grupo e opcional. Qualquer formulário web moderno que ainda aceite 5 dígitos como válido e antipattern — os Correios não entregam mais correspondência chaveada apenas pelo código antigo.
Converter legado para atual: quando e ou não possível
A regra simplista de padding ("acrescentar 000 ao código de 5 dígitos") so funciona em algumas cidades e somente quando o endereço e univoco no nível do município. Em capitais e regiões metropolitanas, a conversão e um-para-muitos: um único código de 5 dígitos pode mapear para dezenas de CEPs de 8 dígitos, um por rua ou quadra. Não existe algoritmo que recupere a informação perdida; você precisa de:
- Consulta a tabela histórica do DNE dos Correios (pago, sob contrato).
- O endereço original (rua, bairro, cidade) para re-geocodificar contra uma consulta CEP atual como ViaCEP.
- Para cidades pequenas que ainda usam um único CEP de 8 dígitos (chamado CEP geral, terminado em -000), o código legado de 5 dígitos mais o sufixo padrão
-000pode aproximar o código moderno, mas não e garantido.
Em suma: nunca assuma que 12345 equivale a 12345-000 em produção. Trate a conversão como problema de qualidade de dado, não como transformacao de string.
Estrutura moderna do CEP e faixas especiais
O CEP de 8 dígitos divide-se em 5 dígitos de prefixo geografico + 3 dígitos de sufixo de distribuição. O próprio prefixo geografico codifica região, sub-região, setor, subsetor e divisão, em escala geografica decrescente da esquerda para a direita. O sufixo de 3 dígitos identifica o bloco, predio ou grande usuário. Sufixos especiais que vale conhecer:
- -000: CEP geral da cidade (municipios pequenos).
- -899 a -900: faixa reservada para caixas postais e grandes usuários.
- -970: tipicamente uma agência dos Correios.
- -999: comunidade de caixa postal em cidades maiores.
Os prefixos regionais de 5 dígitos hoje ainda ecoam a divisão de 1971: 0xxxx Grande São Paulo, 1xxxx interior de SP, 2xxxx RJ + ES, 3xxxx MG, 4xxxx BA + SE, 5xxxx PE + AL + PB + RN, 6xxxx CE + PI + MA + Norte, 7xxxx DF + Centro-Oeste, 8xxxx PR + SC, 9xxxx RS.
Casos de uso praticos para um validador legado
Onde esta ferramenta realmente ajuda em projetos reais de software brasileiro:
- Migração de ERP: extrair endereços de sistemas anteriores a 1992 (mainframes COBOL ainda em uso em alguns bancos e concessionarias).
- Parsing de documentos históricos: OCR de contratos escaneados, registros públicos, escrituras antigas que usam o CEP legado.
- Genealogia e pesquisa academica: cruzar CEPs antigos com dados atuais do IBGE.
- Auditoria de qualidade de dados: identificar campos que ainda contem 5 ou 7 dígitos em bases modernas — geralmente sinal de bug de importacao.
- Suporte ao cliente: explicar a um usuário por que o CEP digitado não localiza no ViaCEP.
Para desenvolvimento novo, sempre valide contra o padrão de 8 dígitos. ViaCEP (viacep.com.br/ws/{CEP}/json/) e BrasilAPI (brasilapi.com.br/api/cep/v2/{CEP}) são APIs gratuitas e publicas que resolvem códigos de 8 dígitos para endereços completos. Ambas sincronizam mensalmente com o DNE dos Correios e tem rate limit em torno de 10.000 requisições por dia no tier gratuito.
FAQ
Os Correios ainda aceitam CEP de 5 dígitos no envelope?
Não. Desde o início dos anos 1990 as máquinas de triagem oficiais exigem o formato completo de 8 dígitos. Envelopes com apenas 5 dígitos são processados manualmente e frequentemente atrasam ou retornam. Serviços de postagem (NF-e, e-commerce) rejeitam CEPs de 5 dígitos no nível da API.
Posso simplesmente acrescentar três zeros para converter um CEP de 5 dígitos?
Apenas como fallback de última opção para cidades muito pequenas que tem CEP geral terminado em -000. Em capitais e regiões metropolitanas, o sufixo codifica rua ou quadra especifica e não pode ser inferido. O caminho seguro e re-geocodificar usando o nome do logradouro original via ViaCEP.
O formato de 8 dígitos e obrigatório hoje?
Sim. Todo layout que inclui campo CEP (NF-e, eSocial, ERP, checkout de e-commerce) espera 8 dígitos. Muitos ERPs aplicam a mascara XXXXX-XXX automaticamente e rejeitam tamanho menor no nível de entrada.
O que e o DNE e como acesso?
DNE (Diretorio Nacional de Endereços) e a base oficial e completa de endereços brasileiros mantida pelos Correios. Inclui as tabelas históricas de conversão. E vendido por assinatura a empresas de logística, bancos e plataformas de e-commerce. Projetos menores usam os wrappers gratuitos ViaCEP/BrasilAPI, que cobrem todos os CEPs atuais de 8 dígitos mas não os dados completos de conversão legada.
Por que minha base legada mostra CEPs de 7 dígitos?
Quase sempre bug de importacao: uma coluna tipada como inteiro descartou o zero a esquerda de um CEP de 8 dígitos. A correção e left-pad com zeros até 8 dígitos e revalidar. Esta ferramenta sinaliza entradas de 7 dígitos e sugere a correção com prefixo de zero.
Ferramentas Relacionadas
Validador CEP (UF Implícita)
Valide um CEP e descubra o estado (UF) correspondente pelas faixas oficiais dos Correios. Útil para preencher endereços, conferir cadastros e cálculos de frete.
Validador de Código Postal de Portugal
Valida o formato dos códigos postais de Portugal (####-###) e identifica a região pelos primeiros dois dígitos (Lisboa, Porto, Coimbra, etc.).
Validador de Formato de CEP
Valida o formato de CEP brasileiro (8 dígitos com ou sem hífen). Apenas formato — não confere existência real.
Validador Código Postal FR (5 dígitos)
Valide o formato de um código postal da França (5 dígitos). Útil para formulários, e-commerce e envios internacionais que atendem clientes franceses.
Validador Código Postal JP (〒NNN-NNNN)
Valide o formato de um código postal do Japão (〒NNN-NNNN). Útil para formulários, e-commerce e envios internacionais que atendem clientes no Japão.
Validador Código Postal CA (A1A 1A1)
Valide o formato de um código postal do Canadá (padrão A1A 1A1, letra e dígito alternados). Útil para formulários, e-commerce e envios para clientes canadenses.