Chaque développeur ayant construit un formulaire d'adresse pour des clients européens finit par découvrir la vérité : il n'existe pas de format de code postal européen. Chaque pays possède le sien, et les variations sont réellement significatives. Cette page est une référence pays par pays couvrant les 27 membres de l'UE plus les principaux pays européens non membres, avec les patterns regex et conseils de validation dont vous avez besoin en production.
Le pattern de haut niveau
Les codes postaux européens se répartissent en quatre groupes environ :
- 5 chiffres numériques : Allemagne, France, Italie, Espagne, Finlande, Croatie, Estonie, Grèce, Lituanie, Slovaquie.
- 4 chiffres numériques : Belgique, Bulgarie, Hongrie, Autriche, Suisse, Liechtenstein, Luxembourg, Norvège, Slovénie, Danemark.
- Alphanumérique, format fixe : Pays-Bas (4 chiffres plus 2 lettres), Irlande (Eircode, 7 alphanumériques), Malte (3 lettres plus 4 chiffres).
- Alphanumérique hiérarchique : Royaume-Uni (longueur variable, deux parties).
Plus quelques cas particuliers : la Suède utilise 5 chiffres avec une espace après le troisième (123 45), la Pologne utilise 5 chiffres avec un tiret après le deuxième (00-001), la Tchéquie utilise 5 chiffres avec une espace après le troisième (110 00).
Référence UE-27
| Pays | ISO | Format | Exemple | Regex |
|---|---|---|---|---|
| Allemagne | DE | 5 chiffres | 10115 | ^\d{5}$ |
| Autriche | AT | 4 chiffres | 1010 | ^\d{4}$ |
| Belgique | BE | 4 chiffres | 1000 | ^\d{4}$ |
| Bulgarie | BG | 4 chiffres | 1000 | ^\d{4}$ |
| Chypre | CY | 4 chiffres | 1010 | ^\d{4}$ |
| Croatie | HR | 5 chiffres | 10000 | ^\d{5}$ |
| Danemark | DK | 4 chiffres | 1050 | ^\d{4}$ |
| Espagne | ES | 5 chiffres | 28013 | ^\d{5}$ |
| Estonie | EE | 5 chiffres | 10111 | ^\d{5}$ |
| Finlande | FI | 5 chiffres | 00100 | ^\d{5}$ |
| France | FR | 5 chiffres | 75008 | ^\d{5}$ |
| Grèce | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Hongrie | HU | 4 chiffres | 1051 | ^\d{4}$ |
| Irlande | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Italie | IT | 5 chiffres | 00184 | ^\d{5}$ |
| Lettonie | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Lituanie | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Luxembourg | LU | 4 chiffres | 1234 | ^\d{4}$ |
| Malte | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Pays-Bas | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Pologne | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Portugal | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Roumanie | RO | 6 chiffres | 010001 | ^\d{6}$ |
| Slovaquie | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Slovénie | SI | 4 chiffres | 1000 | ^\d{4}$ |
| Suède | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
| Tchéquie | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
Principaux pays européens hors UE
| Pays | ISO | Format | Exemple | Regex |
|---|---|---|---|---|
| Islande | IS | 3 chiffres | 101 | ^\d{3}$ |
| Liechtenstein | LI | 4 chiffres | 9490 | ^\d{4}$ |
| Norvège | NO | 4 chiffres | 0150 | ^\d{4}$ |
| Royaume-Uni | GB | hiérarchique | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Suisse | CH | 4 chiffres | 8001 | ^\d{4}$ |
Le code postal britannique en détail
Le système britannique est le plus dense en informations d'Europe. Un code comme SW1A 1AA se décompose ainsi :
SW: zone postale (Londres Sud-Ouest)SW1A: district postal (St James's et Pimlico)SW1A 1: secteur postal (quelques rues)SW1A 1AA: unité postale (point de livraison spécifique, souvent un bâtiment)
Cette hiérarchie signifie qu'un code postal britannique peut identifier un bâtiment, c'est pourquoi les produits britanniques utilisent souvent le code postal comme proxy pour un regroupement au niveau du quartier ou même de la rue. Presque aucun autre système de codes postaux ne permet cela.
Patterns de validation en production
L'approche la moins coûteuse en production est une table de regex par pays comme celle ci-dessus, appliquée à partir d'un code pays de l'adresse. Le code pays peut provenir de :
- Un sélecteur explicite que l'utilisateur a choisi
- La géolocalisation IP de l'utilisateur
- Le résultat du géocodeur (la plupart des géocodeurs en production normalisent le code postal et incluent le code pays dans la réponse)
Évitez de valider un code postal sans connaître le pays. Un code à 4 chiffres est valide dans 12 pays et invalide dans bien d'autres.
Pour les flux à fort enjeu (paiement, KYC, secteurs réglementés), ne vous arrêtez pas au regex. Envoyez l'adresse à un géocodeur et traitez une réponse de précision "rooftop" ou "street" comme la validation, pas le seul match regex. Un code postal correctement formaté peut tout de même ne pas correspondre à une adresse réelle.
Stockage et normalisation
Stockez les codes postaux sous forme de chaînes de caractères, pas de nombres. Les zéros initiaux comptent (01100 est un code lituanien valide ; 1100 ne l'est pas). Conventions de format de stockage :
- Supprimez les caractères non alphanumériques lors des comparaisons entre jeux de données.
- Affichez dans la forme canonique du pays (avec tirets, espaces, préfixes) en sortie.
- Stockez toujours le code pays aux côtés du code postal, même si votre produit n'opère que dans un seul pays aujourd'hui. Le schéma s'adapte à l'expansion multi-pays sans migration.
Comment MapAtlas aide
L'API Geocoding de MapAtlas renvoie un champ address_components.postal_code normalisé pour chaque pays pris en charge, validé par rapport aux données sources. L'API Search accepte un code postal comme entrée de recherche et renvoie le lieu correspondant. Les deux API sont hébergées en UE, conformes RGPD et construites sur des données de qualité OSM avec des parseurs d'adresses explicites par pays.
Pour une analyse approfondie de la manière dont les adresses deviennent des coordonnées, consultez Qu'est-ce qu'un géocode. Pour la mécanique de longitude et latitude derrière chaque réponse de coordonnées, consultez Longitude et latitude.
Questions fréquemment posées
Quel est le format des codes postaux européens ?
Il n'existe pas de format unique pour les codes postaux européens. Chaque pays définit le sien. La plupart utilisent un code numérique de longueur fixe (5 chiffres en Allemagne, France, Italie, Espagne ; 4 chiffres en Belgique, Hongrie, Autriche, Suisse), mais plusieurs utilisent des codes alphanumériques (les Pays-Bas utilisent 4 chiffres plus 2 lettres, le Royaume-Uni utilise un système alphanumérique complexe en deux parties, l'Irlande utilise l'Eircode avec 7 caractères alphanumériques). Un validateur d'adresses fonctionnel doit contenir un pattern par pays pour les 27 membres de l'UE plus les principaux pays européens non membres.
Un code postal allemand (Postleitzahl) est-il identique à un code postal polonais ?
Les deux comportent cinq caractères mais la structure diffère. L'Allemagne utilise 5 chiffres contigus (ex. 10115). La Pologne utilise 2 chiffres, un tiret, puis 3 chiffres (ex. 00-001). Pour le stockage, vous pouvez conserver la forme canonique avec le tiret pour la Pologne et sans pour l'Allemagne. Pour la correspondance entre jeux de données, normalisez en supprimant les caractères non alphanumériques et en réappliquant le format spécifique au pays lors de l'affichage.
Comment valider un code postal de n'importe quel pays de l'UE ?
Commencez par identifier le pays (à partir de l'adresse, d'un code pays ISO 3166-1 alpha-2 ou de la géolocalisation de l'utilisateur). Appliquez ensuite le pattern regex de ce pays. La validation par pays est le pattern standard en production, car un regex global unique rejetterait des codes valides ou en accepterait des clairement invalides. L'API Geocoding MapAtlas renvoie un code postal normalisé par pays dans ses `address_components`, de sorte que vous laissez généralement le géocodeur effectuer l'étape de validation à votre place.
Pourquoi le système de codes postaux du Royaume-Uni est-il si différent ?
Les codes postaux britanniques utilisent un système alphanumérique hiérarchique qui encode la zone postale, le district, le secteur et l'unité en deux parties (ex. SW1A 1AA pour Buckingham Palace). Il contient plus d'informations spatiales par code que la plupart des systèmes nationaux, c'est pourquoi les codes postaux britanniques sont parfois utilisés comme proxy pour un quartier, voire une rue individuelle. Le système a été conçu dans les années 1950 et 1960 et a depuis été intégré à l'infrastructure de données moderne.

