Ogni sviluppatore che ha costruito un form di indirizzo per clienti europei scopre prima o poi la verità: non esiste un formato di codice postale europeo. Ogni paese ha il proprio, e le variazioni sono genuinamente significative. Questa pagina è un riferimento paese per paese che copre i 27 stati UE più i principali paesi europei non UE, con i pattern regex e i consigli di validazione di cui hai bisogno in produzione.
Il Pattern di Alto Livello
I codici postali europei si dividono in circa quattro gruppi:
- 5 cifre numeriche: Germania, Francia, Italia, Spagna, Finlandia, Croazia, Estonia, Grecia, Lituania, Slovacchia.
- 4 cifre numeriche: Belgio, Bulgaria, Ungheria, Austria, Svizzera, Liechtenstein, Lussemburgo, Norvegia, Slovenia, Danimarca.
- Alfanumerico, formato fisso: Paesi Bassi (4 cifre più 2 lettere), Irlanda (Eircode, 7 alfanumerici), Malta (3 lettere più 4 cifre).
- Alfanumerico gerarchico: Regno Unito (lunghezza variabile, in due parti).
Più qualche caso particolare: la Svezia usa 5 cifre con uno spazio dopo la terza (123 45), la Polonia usa 5 cifre con un trattino dopo la seconda (00-001), la Cechia usa 5 cifre con uno spazio dopo la terza (110 00).
Il Riferimento EU-27
| Paese | ISO | Formato | Esempio | Regex |
|---|---|---|---|---|
| Austria | AT | 4 cifre | 1010 | ^\d{4}$ |
| Belgio | BE | 4 cifre | 1000 | ^\d{4}$ |
| Bulgaria | BG | 4 cifre | 1000 | ^\d{4}$ |
| Croazia | HR | 5 cifre | 10000 | ^\d{5}$ |
| Cipro | CY | 4 cifre | 1010 | ^\d{4}$ |
| Cechia | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
| Danimarca | DK | 4 cifre | 1050 | ^\d{4}$ |
| Estonia | EE | 5 cifre | 10111 | ^\d{5}$ |
| Finlandia | FI | 5 cifre | 00100 | ^\d{5}$ |
| Francia | FR | 5 cifre | 75008 | ^\d{5}$ |
| Germania | DE | 5 cifre | 10115 | ^\d{5}$ |
| Grecia | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Ungheria | HU | 4 cifre | 1051 | ^\d{4}$ |
| Irlanda | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Italia | IT | 5 cifre | 00184 | ^\d{5}$ |
| Lettonia | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Lituania | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Lussemburgo | LU | 4 cifre | 1234 | ^\d{4}$ |
| Malta | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Paesi Bassi | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Polonia | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Portogallo | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Romania | RO | 6 cifre | 010001 | ^\d{6}$ |
| Slovacchia | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Slovenia | SI | 4 cifre | 1000 | ^\d{4}$ |
| Spagna | ES | 5 cifre | 28013 | ^\d{5}$ |
| Svezia | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
Principali Paesi Europei Non UE
| Paese | ISO | Formato | Esempio | Regex |
|---|---|---|---|---|
| Regno Unito | GB | gerarchico | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Svizzera | CH | 4 cifre | 8001 | ^\d{4}$ |
| Norvegia | NO | 4 cifre | 0150 | ^\d{4}$ |
| Islanda | IS | 3 cifre | 101 | ^\d{3}$ |
| Liechtenstein | LI | 4 cifre | 9490 | ^\d{4}$ |
Il CAP del Regno Unito in Dettaglio
Il sistema UK è il più denso di informazioni in Europa. Un codice come SW1A 1AA si decompone in:
SW: area postale (Londra South West)SW1A: distretto postale (St James's e Pimlico)SW1A 1: settore postale (qualche strada)SW1A 1AA: unità postale (punto di consegna specifico, spesso un singolo edificio)
Questa gerarchia significa che un CAP UK può identificare un edificio, motivo per cui i prodotti UK usano spesso il CAP come proxy per raggruppamenti a livello di quartiere o persino di strada. Quasi nessun altro sistema di codici postali fa questo.
Pattern di Validazione in Produzione
L'approccio più economico in produzione è una tabella regex per paese come quella sopra, applicata in base a un codice paese dall'indirizzo. Il codice paese può provenire da:
- Un dropdown esplicito selezionato dall'utente
- La geolocalizzazione IP dell'utente
- Il risultato del geocoder (la maggior parte dei geocoder in produzione normalizza il codice postale e include il codice paese nella risposta)
Evita di cercare di validare un codice postale senza conoscere il paese. Un codice a 4 cifre è valido in 12 paesi e non valido in molti altri.
Per flussi ad alto rischio (checkout, KYC, settori regolamentati), non fermarti al regex. Invia l'indirizzo a un geocoder e tratta una risposta a precisione "rooftop" o "street" come la validazione, non il solo match del regex. Un codice postale correttamente formattato può comunque non corrispondere a un indirizzo reale.
Memorizzazione e Normalizzazione
Memorizza i codici postali come stringhe, non come numeri. Gli zero iniziali contano (01100 è un codice lituano valido; 1100 non lo è). Convenzioni di formato per la memorizzazione:
- Rimuovi i caratteri non alfanumerici quando confronti tra dataset.
- Visualizza nella forma canonica del paese (con trattini, spazi, prefissi) in output.
- Memorizza sempre il codice paese insieme al codice postale, anche se il tuo prodotto oggi opera in un solo paese. Lo schema si adatta all'espansione multi-paese senza migrazione.
Come MapAtlas Aiuta
La Geocoding API di MapAtlas restituisce un campo address_components.postal_code normalizzato per ogni paese supportato, validato rispetto ai dati di origine. La Search API accetta un codice postale come input di ricerca e restituisce il luogo corrispondente. Entrambe le API sono ospitate in UE, conformi al GDPR, e basate su dati di qualità OSM con parser di indirizzi specifici per paese.
Per uno sguardo più approfondito su come gli indirizzi diventano coordinate, vedi Cos'è un Geocode. Per la meccanica di longitudine e latitudine dietro ogni risposta con coordinate, vedi Longitudine e Latitudine.
Domande frequenti
Qual è il formato dei codici postali europei?
Non esiste un formato unico di codice postale europeo. Ogni paese definisce il proprio. La maggior parte usa un codice numerico di lunghezza fissa (5 cifre in Germania, Francia, Italia, Spagna; 4 cifre in Belgio, Ungheria, Austria, Svizzera), ma diversi usano codici alfanumerici (i Paesi Bassi usano 4 cifre più 2 lettere, il Regno Unito usa un complesso sistema alfanumerico in due parti, l'Irlanda usa Eircode con 7 caratteri alfanumerici). Un validatore di indirizzi funzionale deve avere un pattern per paese per i 27 stati UE più i principali paesi europei non UE.
Il codice postale tedesco (Postleitzahl) è uguale a quello polacco?
Entrambi hanno cinque caratteri ma la struttura è diversa. La Germania usa 5 cifre contigue (es. 10115). La Polonia usa 2 cifre, un trattino, poi 3 cifre (es. 00-001). Per la memorizzazione, puoi tenere la forma canonica con il trattino per la Polonia e senza per la Germania. Per il matching tra dataset, normalizza rimuovendo i caratteri non alfanumerici e riaapplicando il formato specifico del paese in fase di visualizzazione.
Come valido un codice postale di qualsiasi paese UE?
Prima identifica il paese (dall'indirizzo, da un codice paese ISO 3166-1 alpha-2 o dalla geolocalizzazione dell'utente). Poi applica il pattern regex di quel paese. La validazione consapevole del paese è il pattern standard in produzione, perché un singolo regex globale rifiuterebbe codici validi o accetterebbe quelli chiaramente non validi. La MapAtlas Geocoding API restituisce un codice postale normalizzato per paese nei suoi `address_components`, quindi di solito lasci che il geocoder faccia il passo di validazione per te.
Perché il sistema di codici postali del Regno Unito sembra così diverso?
I CAP del Regno Unito usano un sistema alfanumerico gerarchico che codifica l'area postale, il distretto, il settore e l'unità in due parti (es. SW1A 1AA per Buckingham Palace). Contiene più informazioni spaziali per codice rispetto alla maggior parte dei sistemi nazionali, motivo per cui i CAP UK vengono a volte usati come proxy per il quartiere o persino per singole strade. Il sistema è stato progettato negli anni '50 e '60 ed è stato adattato all'infrastruttura digitale moderna da allora.

