Regex code postal suisse (NPA)
Un NPA suisse (PLZ en allemand) a 4 chiffres, de 1000 à 9658 d'après le répertoire officiel de swisstopo (janvier 2026), dont le plus haut est Wildhaus (9658). Le Liechtenstein partage ce système : ses codes, 9485 à 9498, tombent dans l'espace suisse, donc toute regex « 4 chiffres » accepte Vaduz (9490) comme suisse. Un éditeur du W3C a posté en 2011 une plage de 1000 à 9659, avec une borne haute décalée d'une unité. Une réponse Stack Overflow à 1 vote accepte même un code de 5 chiffres, parce qu'elle sert aussi à l'Allemagne. Voici un motif aux bornes officielles qui exclut le Liechtenstein, comparé à ces tentatives réelles.
/^(?!94(?:8[5-9]|9[0-8]))(?:[1-8][0-9]{3}|9[0-5][0-9]{2}|96(?:[0-4][0-9]|5[0-8]))$/passe 23/23 cas
Comparatif des patterns existants
Implémentation
const re = new RegExp("^(?!94(?:8[5-9]|9[0-8]))(?:[1-8][0-9]{3}|9[0-5][0-9]{2}|96(?:[0-4][0-9]|5[0-8]))$", "");
re.test(input);Limites
- Valide seulement la FORME (4 chiffres de 1000 à 9658, hors bloc du Liechtenstein) : ne vérifie pas qu'un NPA est réellement attribué par la Poste suisse. Le répertoire swisstopo compte 3 190 NPA distincts : « 9999 » est exclu, mais bien d'autres codes à l'intérieur de la plage ne sont pas attribués.
- La borne haute 9658 (Wildhaus) vient du répertoire officiel de janvier 2026 : si la Poste suisse attribue un jour un code supérieur, ce motif le rejettera à tort. À revérifier avant de dépendre de cette borne sur un produit à long terme.
- Exclut le bloc 9485 à 9498, qui correspond aux codes du Liechtenstein dans le répertoire officiel (Vaduz 9490, Planken 9498) : retirez le lookahead « (?!94…) » si votre formulaire accepte aussi les adresses du Liechtenstein, qui partage le système postal suisse.
- Ne couvre pas les enclaves de Campione d'Italia (6911) et de Büsingen (8238), citées par Wikipédia mais absentes du répertoire swisstopo consulté : un code qui commence à 6911 passe ce motif sans être confirmé par cette source.
Codes postaux d’autres pays
- code postal allemand (PLZ)
- code postal argentin (CPA)
- code postal australien
- code postal brésilien (CEP)
- code postal britannique (UK postcode)
- code postal canadien
- code postal espagnol
- code postal français
- code postal japonais
- code postal néerlandais
- code postal polonais
- code postal portugais
- code postal suédois
- code postal tchèque (PSČ)
- Eircode irlandais
- PIN code indien
- ZIP code américain (ZIP et ZIP+4)
- Tous les codes postaux par pays