Todo desenvolvedor que já construiu um formulário de endereços para clientes europeus eventualmente descobre a verdade: não existe um formato de código postal europeu. Cada país tem o seu, e as variações são genuinamente significativas. Esta página é uma referência país a país cobrindo a UE-27 mais os principais países europeus fora da UE, com os padrões regex e dicas de validação que você precisa em produção.
O Padrão Geral
Os códigos postais europeus se dividem em aproximadamente quatro grupos:
- 5 dígitos numéricos: Alemanha, França, Itália, Espanha, Finlândia, Croácia, Estônia, Grécia, Lituânia, Eslováquia.
- 4 dígitos numéricos: Bélgica, Bulgária, Hungria, Áustria, Suíça, Liechtenstein, Luxemburgo, Noruega, Eslovênia, Dinamarca.
- Alfanumérico, formato fixo: Países Baixos (4 dígitos mais 2 letras), Irlanda (Eircode, 7 alfanuméricos), Malta (3 letras mais 4 dígitos).
- Alfanumérico hierárquico: Reino Unido (comprimento variável, duas partes).
Mais alguns casos especiais: a Suécia usa 5 dígitos com espaço após o terceiro (123 45), a Polônia usa 5 dígitos com hífen após o segundo (00-001), a Tchéquia usa 5 dígitos com espaço após o terceiro (110 00).
A Referência UE-27
| País | ISO | Formato | Exemplo | Regex |
|---|---|---|---|---|
| Áustria | AT | 4 dígitos | 1010 | ^\d{4}$ |
| Bélgica | BE | 4 dígitos | 1000 | ^\d{4}$ |
| Bulgária | BG | 4 dígitos | 1000 | ^\d{4}$ |
| Croácia | HR | 5 dígitos | 10000 | ^\d{5}$ |
| Chipre | CY | 4 dígitos | 1010 | ^\d{4}$ |
| Tchéquia | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
| Dinamarca | DK | 4 dígitos | 1050 | ^\d{4}$ |
| Estônia | EE | 5 dígitos | 10111 | ^\d{5}$ |
| Finlândia | FI | 5 dígitos | 00100 | ^\d{5}$ |
| França | FR | 5 dígitos | 75008 | ^\d{5}$ |
| Alemanha | DE | 5 dígitos | 10115 | ^\d{5}$ |
| Grécia | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Hungria | HU | 4 dígitos | 1051 | ^\d{4}$ |
| Irlanda | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Itália | IT | 5 dígitos | 00184 | ^\d{5}$ |
| Letônia | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Lituânia | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Luxemburgo | LU | 4 dígitos | 1234 | ^\d{4}$ |
| Malta | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Países Baixos | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Polônia | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Portugal | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Romênia | RO | 6 dígitos | 010001 | ^\d{6}$ |
| Eslováquia | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Eslovênia | SI | 4 dígitos | 1000 | ^\d{4}$ |
| Espanha | ES | 5 dígitos | 28013 | ^\d{5}$ |
| Suécia | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
Principais Países Europeus Fora da UE
| País | ISO | Formato | Exemplo | Regex |
|---|---|---|---|---|
| Reino Unido | GB | hierárquico | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Suíça | CH | 4 dígitos | 8001 | ^\d{4}$ |
| Noruega | NO | 4 dígitos | 0150 | ^\d{4}$ |
| Islândia | IS | 3 dígitos | 101 | ^\d{3}$ |
| Liechtenstein | LI | 4 dígitos | 9490 | ^\d{4}$ |
O Postcode do Reino Unido em Detalhe
O sistema britânico é o mais denso em informação da Europa. Um código como SW1A 1AA se decompõe em:
SW: área postal (London South West)SW1A: distrito postal (St James's e Pimlico)SW1A 1: setor postal (algumas ruas)SW1A 1AA: unidade postal (ponto de entrega específico, frequentemente um prédio)
Essa hierarquia significa que um postcode britânico pode identificar um prédio, razão pela qual produtos britânicos frequentemente usam o postcode como proxy para agrupamento em nível de bairro ou até de rua. Quase nenhum outro sistema de código postal de outro país faz isso.
Padrões de Validação em Produção
A abordagem mais barata em produção é uma tabela regex por país como a acima, aplicada com base em um código de país do endereço. O código de país pode vir de:
- Um dropdown explícito que o usuário selecionou
- A geolocalização por IP do usuário
- O resultado do geocodificador (a maioria dos geocodificadores de produção normaliza o código postal e inclui o código do país na resposta)
Evite tentar validar um código postal sem conhecer o país. Um código de 4 dígitos é válido em 12 países e inválido em muitos outros.
Para fluxos de alto risco (checkout, KYC, setores regulados), não pare no regex. Envie o endereço para um geocodificador e trate uma resposta de precisão "rooftop" ou "street" como a validação, não apenas a correspondência regex. Um código postal corretamente formatado ainda pode não corresponder a um endereço real.
Armazenamento e Normalização
Armazene códigos postais como strings, não como números. Zeros à esquerda importam (01100 é um código lituano válido; 1100 não é). Convenções de formato de armazenamento:
- Remova caracteres não alfanuméricos ao comparar entre conjuntos de dados.
- Exiba na forma canônica do país (com hífens, espaços, prefixos) na saída.
- Sempre armazene o código do país junto com o código postal, mesmo que seu produto opere apenas em um país hoje. O esquema escala para expansão multi-país sem migração.
Como o MapAtlas Ajuda
A Geocoding API da MapAtlas retorna um campo address_components.postal_code normalizado para cada país suportado, validado contra os dados de origem. A Search API aceita um código postal como entrada de busca e retorna o lugar correspondente. Ambas as APIs são hospedadas na UE, conformes com GDPR e construídas sobre dados no nível do OSM com parsers de endereço por país explícitos.
Para uma visão mais aprofundada de como endereços se tornam coordenadas, veja O Que É um Geocode. Para a mecânica de longitude e latitude por trás de cada resposta de coordenada, veja Longitude vs Latitude.
Perguntas frequentes
Qual é o formato dos códigos postais europeus?
Não existe um único formato de código postal europeu. Cada país define o seu. A maioria usa um código numérico de comprimento fixo (5 dígitos na Alemanha, França, Itália, Espanha; 4 dígitos na Bélgica, Hungria, Áustria, Suíça), mas vários usam códigos alfanuméricos (a Holanda usa 4 dígitos mais 2 letras, o Reino Unido usa um sistema alfanumérico de duas partes complexo, a Irlanda usa Eircode com 7 caracteres alfanuméricos). Um validador de endereços funcional precisa ter um padrão por país para a UE-27 mais os principais países europeus fora da UE.
O código postal alemão (Postleitzahl) é o mesmo que o código postal polonês?
Ambos têm cinco caracteres, mas a estrutura difere. A Alemanha usa 5 dígitos contíguos (ex: 10115). A Polônia usa 2 dígitos, um hífen e depois 3 dígitos (ex: 00-001). Para armazenamento, você pode manter a forma canônica com o hífen para a Polônia e sem ele para a Alemanha. Para correspondência entre conjuntos de dados, normalize removendo caracteres não alfanuméricos e reaplicando o formato específico do país na exibição.
Como valido um código postal de qualquer país da UE?
Primeiro identifique o país (pelo endereço, um código de país ISO 3166-1 alfa-2 ou a geolocalização do usuário). Depois aplique o padrão regex daquele país. A validação por país é o padrão de produção, porque um único regex global rejeitaria códigos válidos ou aceitaria os claramente inválidos. A MapAtlas Geocoding API retorna um código postal normalizado por país em seus `address_components`, então geralmente você deixa o geocodificador fazer a etapa de validação por você.
Por que o sistema de código postal do Reino Unido parece tão diferente?
Os postcodes do Reino Unido usam um sistema alfanumérico hierárquico que codifica a área postal, o distrito, o setor e a unidade em duas partes (ex: SW1A 1AA para Buckingham Palace). Carrega mais informação espacial por código do que a maioria dos sistemas de outros países, razão pela qual os postcodes britânicos às vezes são usados como proxy para bairros ou até ruas individuais. O sistema foi criado nas décadas de 1950 e 1960 e desde então foi adaptado para a infraestrutura moderna de dados.

