CEP
Código de Endereçamento Postal, o código postal de 8 dígitos administrado pelos Correios.
Validar
- JavaScript, biblioteca
- Python, biblioteca10 casos falham
- Go, biblioteca9 casos falham
- Ruby, biblioteca10 casos falham
- Rust, biblioteca9 casos falham
- .NET, biblioteca1 caso falha
- Erlang, biblioteca10 casos falham
Valida um CEP: exatamente 8 dígitos.
ceppode ser uma string ou um número. Um CEP que começa com0precisa ser uma string.- Espaços, pontos, hífens e barras são ignorados, onde quer que apareçam. Qualquer outro caractere torna o valor inválido.
- Um número só é lido se for um inteiro seguro não negativo:
-20040020e2004002.1são inválidos.isValidegetStateleem o número1310100como 7 dígitos e o rejeitam, enquantogetAddressInfoeformatcompado completam com zeros.
Decisão pendente
A referência (JS) ignora espaços, pontos e hífens (01310-200 é válido). As outras bibliotecas aceitam somente dígitos. Veja a decisão em aberto em docs/findings.md (em inglês).
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
cep | string | number | sim |
| retorna | boolean |
Valida um CEP (código de endereçamento postal).
- Aceita
stringounumber. Um CEP que começa com0precisa ser string, já que um número não preserva o zero à esquerda, e um número só é lido quando é um inteiro seguro não negativo. - Espaços, pontos, hífens e barras são ignorados. Qualquer outro caractere invalida o valor.
getAddressInfoByCepeformatCepcompad: truesão mais tolerantes com números: preenchem um número com zeros à esquerda até 8 dígitos (1310100vira01310-100), enquantoisValidCepegetStateByCepleem1310100como 7 dígitos e o rejeitam.
import { isValidCep } from '@brazilian-utils/brazilian-utils';
isValidCep('01310100'); // true
isValidCep('92500-000'); // true (hífen entre os grupos)
isValidCep('92.500-000'); // true (ponto e hífen)
isValidCep('013 10 100'); // true (espaços em qualquer posição entre os dígitos)
isValidCep(20040020); // true (entrada numérica)
isValidCep(-20040020); // false (não é um inteiro seguro não negativo)
isValidCep('9250000A'); // false (letras são rejeitadas)
isValidCep('12345'); // false (tamanho inválido)Teste com JavaScript isValidCep
Casos de teste compartilhados (30) e o resultado em cada biblioteca cep.isValid
Formatar
- JavaScript, biblioteca
- Python, biblioteca13 casos falham
- Go, biblioteca8 casos falham
- Ruby, biblioteca13 casos falham
- Rust, biblioteca10 casos falham
- .NET, biblioteca2 casos falham
- Erlang, biblioteca13 casos falham
Formata um CEP como 00000-000.
options.padprimeiro completa o valor com zeros à esquerda até 8 dígitos. Sem isso, um CEP que começa com0e chega como número perde esse zero.- Todo caractere que não é dígito é removido, e os dígitos depois do 8º são descartados. Um valor incompleto recebe a máscara só até onde vai (
010010vira01001-0). - Um valor vazio, ou sem dígitos, retorna uma string vazia mesmo com
pad. Até a 2.4.0 opadretornava a máscara toda de zeros (00000-000). - Um número só é lido se for um inteiro seguro não negativo. Qualquer outro número (negativo, fracionário, não finito) retorna uma string vazia, com ou sem
pad.
Decisão pendente
A referência (JS) formata só os caracteres que um valor incompleto tem. Ela retorna uma string vazia para entrada vazia ou inválida. As outras bibliotecas retornam null. Veja a decisão em aberto em docs/findings.md (em inglês).
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
options | FormatCepOptions | não |
options.pad | boolean | não |
| retorna | string |
Formata um CEP (código de endereçamento postal).
- Opções (
FormatCepOptions):padpreenche o valor com zeros à esquerda até 8 dígitos antes de aplicar a máscara (padrãofalse). Um valor vazio, ou sem dígitos, devolve''mesmo compad. - Um CEP que começa com
0passado como número perde esse zero: passe uma string ou usepad. Um número só é lido quando é um inteiro seguro não negativo; qualquer outro número retorna''.
import { formatCep } from '@brazilian-utils/brazilian-utils';
formatCep('92500000'); // 92500-000
formatCep('9250000', { pad: true }); // 09250-000
formatCep(-92500000); // '' (não é um inteiro seguro não negativo)Teste com JavaScript formatCep
Casos de teste compartilhados (27) e o resultado em cada biblioteca cep.format
Interpretar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca2 casos falham
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Remove a formatação do CEP e mantém só os dígitos, limitados a 8.
- Os caracteres que não são dígitos são removidos, e o resultado é limitado a 8 dígitos.
- Um número só é lido se for um inteiro seguro não negativo. Qualquer outro número (negativo, fracionário, não finito, fora da faixa segura) retorna uma string vazia.
nulle outros valores que não são string nem número retornam uma string vazia.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | string |
Remove a formatação do CEP, mantém apenas os dígitos e limita o resultado a 8 dígitos.
import { parseCep } from '@brazilian-utils/brazilian-utils';
parseCep('92500-000'); // 92500000Teste com JavaScript parseCep
Casos de teste compartilhados (20) e o resultado em cada biblioteca cep.parse
Gerar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Gera um CEP aleatório: 8 dígitos, sem máscara.
- O CEP não tem dígito verificador, então toda string de 8 dígitos é estruturalmente válida.
- O CEP é sorteado dentro das faixas que os Correios atribuem aos estados, cada CEP com a mesma chance. Ele sempre pertence a um estado, então
cep.getStatenunca retornanullpara ele. 00000-000a00999-999e78900-000a78999-999, que nenhum estado possui, nunca são gerados. Até a 2.4.0 qualquer string de 8 dígitos podia sair, cerca de 1 em 90 numa dessas duas faixas.- A faixa é o bloco que um estado possui, não uma garantia de que todo CEP dentro dela esteja em uso, então o CEP gerado pode não ser o CEP de um endereço real.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
| retorna | string |
Gera um CEP aleatório. Um CEP não tem dígito verificador, então o CEP é sorteado dentro das faixas que os Correios atribuem aos estados, com a mesma chance para cada CEP. Ele sempre pertence a um estado, então getStateByCep nunca responde null para ele; 00000-000 a 00999-999 e 78900-000 a 78999-999, que nenhum estado possui, nunca são gerados. Uma faixa é o bloco que um estado possui, não uma garantia de que todo CEP dela está em uso, então o CEP pode não ser o de um endereço real.
import { generateCep } from '@brazilian-utils/brazilian-utils';
generateCep(); // '92500000'Teste com JavaScript generateCep
Casos de teste compartilhados (1) e o resultado em cada biblioteca cep.generate
Get address info
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Busca o endereço de um CEP em vários provedores ao mesmo tempo e retorna a primeira resposta com sucesso (chamada de rede).
- De um
cepstring, todo caractere que não é dígito é removido ("CEP 01310-100"funciona). Precisam sobrar exatamente 8 dígitos. - Um número precisa ser um inteiro seguro não negativo. Ele é completado com zeros à esquerda até 8 dígitos só a partir de
1000000(01000-000, o menor CEP dos Correios). Um número menor é rejeitado. A 2.4.0 completava qualquer número, então123era buscado como00000-123. - O resultado traz
cep(8 dígitos, sem máscara),state(código de duas letras),city,neighborhoodestreet.neighborhoodestreetvêm vazios quando o CEP cobre uma cidade inteira. options.providersescolhe quais provedores consultar. A função tenta de novo as falhas transitórias de rede, por provedor.options.timeoutMslimita a busca inteira, novas tentativas incluídas. Quando o tempo acaba, a chamada falha com erro de serviço. Precisa ser um número finito positivo.options.signal(umAbortSignalno JavaScript) cancela a busca, e a chamada falha com o motivo do signal, como nofetch. Um signal já abortado falha antes de qualquer requisição. Sem essas opções, a busca não tem limite de tempo.- Falha com um erro. O erro distingue um CEP ou uma opção inválida, um CEP que nenhum provedor conhece e uma falha do serviço.
- Provedor fora do ar não é "não encontrado". A BrasilAPI responde 404 tanto para um CEP desconhecido quanto quando os serviços por trás dela falham. O 404 dela só conta como não encontrado se nenhum outro provedor deixou de responder (erro de rede ou status HTTP de erro). Junto de uma falha assim, a chamada falha com erro de serviço. Um 404 isolado da BrasilAPI, ou um 404 dela junto com
erro: trueda ViaCEP, continua sendo não encontrado. A 2.4.0 deixava o 404 vencer, então uma indisponibilidade podia aparecer como CEP desconhecido. - Um endereço só é aceito quando concorda com o CEP pedido: seus dígitos, completados com zeros à esquerda até 8, precisam ser o CEP (um provedor que responde
1310100para01310-100quer dizer o mesmo CEP e é aceito, enquanto1310101é outro CEP e não é) e o estado, quando ele traz um, precisa ser o estado dono da faixa do CEP (vejacep.getState). Caso contrário, esse provedor conta como se não conhecesse o CEP. A BrasilAPI, por exemplo, respondeu99999-999, um CEP do Rio Grande do Sul, com uma cidade do Paraná. Até a 2.4.0 essa resposta era devolvida. - Quando a busca termina, as requisições dos provedores que perderam a corrida são abortadas.
options.providersaceitaviacep,brasilapiewidenet, disputados na ordem dada (padrão["viacep", "brasilapi"]). Um nome que não é provedor conhecido é ignorado. Uma lista sem nenhum provedor conhecido é uma opção inválida.widenetestá obsoleto e fora da lista padrão: o endpoint dele agora redireciona paraws.apicep.com, que costuma estar indisponível, então só acrescenta um provedor que falha à corrida.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
cep | string | number | sim |
options | GetAddressInfoByCepOptions | não |
options.providers | CepProvider[] | não |
options.signal | AbortSignal | não |
options.timeoutMs | number | não |
| retorna | Promise<AddressInfo> |
Busca o endereço de um CEP em vários provedores ao mesmo tempo e resolve com a primeira resposta bem-sucedida. O resultado é um AddressInfo: cep, state, city, neighborhood e street.
- Opções (
GetAddressInfoByCepOptions):providers(CepProvider[]) lista os provedores a disputar (padrão['viacep', 'brasilapi']).'widenet'está descontinuado, fica fora da lista padrão e costuma estar indisponível: seu endpoint agora redireciona paraws.apicep.com, que respondia 502 na última verificação, então ele só acrescenta um provedor que falha à disputa.timeoutMs(number) limita a busca inteira, tentativas incluídas (padrão: sem limite). Quando o tempo acaba, todas as requisições são abortadas e a chamada rejeita comGetAddressInfoByCepServiceError.signal(AbortSignal) cancela a busca; a chamada rejeita comsignal.reason, como ofetch.
- Aceita string ou número. Uma string tem removido todo caractere que não é dígito (
'CEP 01310-100'é01310100) e precisa sobrar com 8 dígitos. Um número é preenchido com zeros à esquerda até 8 dígitos, já que não carrega o zero inicial de um CEP de São Paulo, mas só a partir de1000000(01000-000, o menor CEP que os Correios atribuem). Um número menor, negativo ou fracionário é rejeitado comGetAddressInfoByCepValidationErrorantes de qualquer requisição. - Repete falhas transitórias de rede por provedor.
- Rejeita com
GetAddressInfoByCepValidationErrorquando o CEP é inválido,providersnão nomeia nenhum provedor conhecido outimeoutMsnão é um número finito positivo, comGetAddressInfoByCepNotFoundErrorquando todos os provedores falharam e pelo menos um informou que o CEP é desconhecido, e comGetAddressInfoByCepServiceErrorquando todos os provedores falharam por outro motivo. - A BrasilAPI responde 404 tanto para um CEP desconhecido quanto quando os serviços por trás dela estão fora do ar, então o 404 dela só conta como "CEP desconhecido" quando nenhum outro provedor deixou de responder.
- Um endereço só é aceito quando concorda com o CEP pedido: seus dígitos, preenchidos com zeros à esquerda até 8 (um provedor que responde
1310100para01310-100quer dizer o mesmo CEP), precisam ser o CEP e o estado dele, quando informado, precisa ser o estado dono da faixa do CEP (vejagetStateByCep). Caso contrário, esse provedor conta como não conhecendo o CEP. A BrasilAPI, por exemplo, respondeu o99999-999, um CEP do Rio Grande do Sul, com uma cidade do Paraná. - Quando a busca termina, as requisições dos provedores que perderam a disputa são abortadas.
- Os três estendem
GetAddressInfoByCepError, então um únicocatchcobre todos.
import { getAddressInfoByCep, GetAddressInfoByCepNotFoundError } from '@brazilian-utils/brazilian-utils';
// Usando os provedores padrão (['viacep', 'brasilapi'])
const address = await getAddressInfoByCep('01310100');
// { cep: '01310100', state: 'SP', city: 'São Paulo', neighborhood: 'Bela Vista', street: 'Avenida Paulista' }
// Usando um provedor específico, e distinguindo um CEP desconhecido de uma falha
try {
await getAddressInfoByCep('01310-100', { providers: ['brasilapi'] });
} catch (error) {
if (error instanceof GetAddressInfoByCepNotFoundError) {
// nenhum provedor conhece o CEP
}
}
// Usando número como entrada (será preenchido automaticamente com zeros à esquerda)
const addressFromNumber = await getAddressInfoByCep(1310100);
// Desistindo depois de 5 segundos
const addressWithinFiveSeconds = await getAddressInfoByCep('01310100', { timeoutMs: 5000 });Teste com JavaScript getAddressInfoByCep
Casos de teste compartilhados (0) e o resultado em cada biblioteca cep.getAddressInfo
Esta função ainda não tem casos de teste compartilhados.
Get info by address
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Consulta todos os CEPs de um logradouro no serviço ViaCEP (chamada de rede).
paramstraz a UF (lida sem diferenciar maiúsculas de minúsculas e sem os espaços das pontas), o município e o logradouro. Antes da consulta, a função remove os espaços das pontas e os acentos do município e do logradouro.- Cada resultado é o registro do ViaCEP sem alteração, com os nomes de campo do próprio ViaCEP:
cep(com máscara,00000-000),logradouro,complemento,unidade,bairro,localidade,uf,estado,regiao,ibge,gia,dddesiafi. Um campo que o serviço acrescente depois também é repassado. - A função tenta de novo as falhas transitórias de rede.
- Falha com um erro. O erro distingue UF/município/logradouro ausente ou inválido, um endereço sem resultado e um erro HTTP do serviço.
- Uma requisição que não chega a ser feita (sem conexão, por exemplo) falha com o erro de rede original, não com um desses erros.
params.federalUnité o código de duas letras da UF, por exemploSP. Precisa ser string e uma UF conhecida.params.cityeparams.streetsão o município e o nome do logradouro (ou parte dele).cityestreetprecisam ser strings com pelo menos 3 caracteres depois de tirar os espaços das pontas e os acentos, o mínimo que o ViaCEP aceita. Um valor em branco, que não é string ou com menos de 3 caracteres falha com o erro de validação antes de qualquer requisição.- Um
paramsque não é objeto (omitido,null, string) e umfederalUnitque não é string também falham com o erro de validação. - O ViaCEP limita a lista a 50 endereços, então um nome de rua curto que corresponde a mais ruas retorna só os 50 primeiros.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
params | GetCepInfoByAddressParams | sim |
params.federalUnit | string | sim |
params.city | string | sim |
params.street | string | sim |
| retorna | Promise<CepAddressInfo[]> |
Busca os CEPs de um endereço na ViaCEP. Resolve com um array de CepAddressInfo.
- O argumento (
GetCepInfoByAddressParams) trazfederalUnit,cityestreet.federalUnitpode estar em minúsculas;cityestreettêm os espaços nas pontas removidos e os acentos retirados antes da consulta, e cada um precisa ser uma string com pelo menos 3 caracteres depois disso, o mínimo que a ViaCEP aceita. - Rejeita com
GetCepInfoByAddressValidationErrorquando a UF, a cidade ou a rua está ausente ou inválida (um valor em branco, um valor que não é string, ou uma cidade ou rua com menos de 3 caracteres, todos rejeitados antes de qualquer requisição), comGetCepInfoByAddressNotFoundErrorquando nenhum endereço corresponde à busca, e comGetCepInfoByAddressErrorquando a ViaCEP responde com um status de erro HTTP. - Repete falhas transitórias de rede, como
getAddressInfoByCep. - Cada item traz a resposta da ViaCEP sem alterações, com os nomes de campo da própria ViaCEP.
- A ViaCEP limita a lista a 50 endereços, então um nome de rua curto que corresponde a mais ruas retorna só os 50 primeiros.
import { getCepInfoByAddress } from '@brazilian-utils/brazilian-utils';
const ceps = await getCepInfoByAddress({
federalUnit: 'MG',
city: 'Ouro Preto',
street: 'Rua Direita'
});
// [
// {
// cep: '35411-152',
// logradouro: 'Rua Direita',
// complemento: '',
// unidade: '',
// bairro: 'Riacho (Amarantina)',
// localidade: 'Ouro Preto',
// uf: 'MG',
// estado: 'Minas Gerais',
// regiao: 'Sudeste',
// ibge: '3146107',
// gia: '',
// ddd: '31',
// siafi: '4921'
// }
// ]Teste com JavaScript getCepInfoByAddress
Casos de teste compartilhados (0) e o resultado em cada biblioteca cep.getInfoByAddress
Esta função ainda não tem casos de teste compartilhados.
Get state
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Retorna o estado dono da faixa de CEP em que o CEP cai. Funciona offline: a resposta vem de uma tabela de faixas, não de uma chamada de rede.
valueé lido como emcep.isValid: 8 dígitos, como string ou número, com espaços, pontos, hífens e barras ignorados.- Um número precisa ser um inteiro não negativo:
-20040020e2004002.5retornamnull. CEP que começa com0deve ser passado como string. - O resultado é o mesmo objeto que
state.getByIbgeCodeestate.listretornam (uma cópia nova a cada chamada). - Retorna
nullpara um CEP inválido, um valor que não é string nem número e um CEP fora de qualquer faixa. - Dois blocos não pertencem a nenhum estado:
00000-000a00999-999, e78900-000a78999-999. No segundo, MT termina em78899-999. - A faixa é o bloco atribuído ao estado. Ela não garante que todo CEP dentro dela esteja em uso. SP é uma faixa única, então
10000-000retorna SP, embora nenhuma cidade use10xxx. - A tabela é a resposta da "Busca Faixa de CEP" dos Correios quando só o estado é informado.
| UF | Faixa de CEP |
|---|---|
| SP | 01000-000 a 19999-999 |
| RJ | 20000-000 a 28999-999 |
| ES | 29000-000 a 29999-999 |
| MG | 30000-000 a 39999-999 |
| BA | 40000-000 a 48999-999 |
| SE | 49000-000 a 49999-999 |
| PE | 50000-000 a 56999-999 |
| AL | 57000-000 a 57999-999 |
| PB | 58000-000 a 58999-999 |
| RN | 59000-000 a 59999-999 |
| CE | 60000-000 a 63999-999 |
| PI | 64000-000 a 64999-999 |
| MA | 65000-000 a 65999-999 |
| PA | 66000-000 a 68899-999 |
| AP | 68900-000 a 68999-999 |
| AM | 69000-000 a 69299-999 e 69400-000 a 69899-999 |
| RR | 69300-000 a 69399-999 |
| AC | 69900-000 a 69999-999 |
| DF | 70000-000 a 72799-999 e 73000-000 a 73699-999 |
| GO | 72800-000 a 72999-999 e 73700-000 a 76799-999 |
| RO | 76800-000 a 76999-999 |
| TO | 77000-000 a 77999-999 |
| MT | 78000-000 a 78899-999 |
| MS | 79000-000 a 79999-999 |
| PR | 80000-000 a 87999-999 |
| SC | 88000-000 a 89999-999 |
| RS | 90000-000 a 99999-999 |
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | State | null |
Retorna o estado brasileiro ao qual um CEP pertence, a partir das faixas de CEP que os Correios atribuem a cada UF (a "Faixa de CEP" de cada UF).
- Funciona offline: nenhuma API de CEP é chamada, então a resposta diz qual estado é dono da faixa, não se o CEP está em uso.
- Aceita o que o
isValidCepaceita: 8 dígitos, como string ou número, ignorando espaços, pontos, hífens e barras. Um CEP que começa com0precisa ser uma string, e um número negativo ou fracionário é rejeitado.getAddressInfoByCepeformatCepcompad: truepreenchem números com zeros à esquerda (1310100vira01310-100). - Amazonas, Distrito Federal e Goiás têm duas faixas cada, e nenhuma faixa estadual cobre
00000-000a00999-999nem78900-000a78999-999. - A faixa é o bloco que pertence ao estado, não uma garantia de que todo CEP dentro dela está em uso:
10000-000está sem uso dentro da faixa de São Paulo e ainda assim responde São Paulo. - Retorna
nullpara um CEP inválido ou fora de todas as faixas. Exporta o tipoState.
import { getStateByCep } from '@brazilian-utils/brazilian-utils';
getStateByCep('01310-100');
// { code: 'SP', name: 'São Paulo', regionCode: 'SE', regionName: 'Sudeste', ibgeCode: 35 }
getStateByCep(20040020);
// { code: 'RJ', name: 'Rio de Janeiro', regionCode: 'SE', regionName: 'Sudeste', ibgeCode: 33 }
getStateByCep('69300-000')?.code; // 'RR'
getStateByCep('72800-000')?.code; // 'GO'
getStateByCep('00999-999'); // null
getStateByCep('12345'); // nullFonte: Correios, Busca Faixa de CEP
Código: brazilian-utils/javascriptTeste com JavaScript getStateByCep
Casos de teste compartilhados (39) e o resultado em cada biblioteca cep.getState
Guias
- Endereço pelo CEPUm formulário que consulta o CEP e preenche rua, bairro, cidade e estado, com Brazilian Utils em React, Angular, Vue e JavaScript puro.
- Campo de documentoUm campo que aplica máscara e valida CPF, CNPJ, CEP ou telefone enquanto você digita, com Brazilian Utils em React, Angular, Vue e JavaScript puro.
- Bibliotecas de schemaOs validadores do Brazilian Utils dentro de um schema do Zod, do Valibot ou do ArkType, ou como um Standard Schema próprio.
- Guia de migração: v1 para v2Como migrar um projeto do Brazilian Utils v1.x para a v2: os exports renomeados, os aliases descontinuados que ainda funcionam e um checklist para seguir.
Especificação
Resumo
O CEP é um código numérico de oito algarismos. Os Correios atribuem esses códigos a localidades, logradouros, unidades dos Correios, serviços, órgãos públicos, empresas e edifícios. Os códigos orientam e aceleram o encaminhamento, o tratamento e a distribuição de objetos de correspondência.
Regras de validação
- A entrada deve conter exatamente
8dígitos.
Algoritmo
- Verificar se a entrada contém exatamente
8caracteres. - Verificar se todos os caracteres são dígitos.
- Se as duas condições forem verdadeiras, retornar válido. Se não, retornar inválido.
Regex
- CEP sem formatação:
^\d{8}$ - CEP formatado:
^\d{5}-\d{3}$
Faixas por estado
Os Correios atribuem a cada estado um ou mais blocos de CEP. cep.getState lê o estado desses blocos, offline.
- Um bloco pertence a um estado, mas nem todo CEP dentro dele está em uso.
10000-000cai no bloco de SP, embora nenhuma cidade use10xxx. - Dois blocos não pertencem a nenhum estado:
00000-000a00999-999e78900-000a78999-999. MT termina em78899-999. - AM, DF e GO têm dois blocos cada.
72800-000a72999-999, entre os dois blocos do DF, pertence a GO. - A tabela completa está na descrição de
cep.getState. cep.generatesorteia só dentro desses blocos, então o CEP gerado sempre pertence a um estado.
Exemplos
- Válido:
01310200 01310-200: decisão pendente. A referência (JS) aceita, as outras bibliotecas não.- Inválido:
12345(deve conter exatamente8caracteres) - Inválido:
123456789(deve conter exatamente8caracteres) - Inválido:
abcdefgh(deve conter apenas dígitos)
Fontes oficiais
- Lei nº 6.538 de 22 de junho de 1978
- Tudo sobre CEP, Correios
- Guia de Endereçamento, Correios
- Busca Faixa de CEP, Correios
- Localidades alvo, Correios
- github.com/BrasilAPI/BrasilAPI/…/[cep].js
- gist.github.com/tamnil/792a6a66f6df9fc028041587cfca0c3d
Veja também Estados (UF), Municípios
Atualizado em
