Regex Swiss postal code (PLZ/NPA)
A Swiss PLZ (NPA in French) has 4 digits, from 1000 to 9658 according to the official swisstopo directory (January 2026), the highest being Wildhaus (9658). Liechtenstein shares this system: its codes, 9485 to 9498, fall inside the Swiss space, so any '4 digits' regex accepts Vaduz (9490) as Swiss. A W3C editor posted in 2011 a range from 1000 to 9659, with an off-by-one upper bound. A one-vote Stack Overflow answer even accepts a 5-digit code, because it also serves Germany. Here's a pattern with the official bounds that excludes Liechtenstein, compared against those real attempts.
/^(?!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]))$/passes 23/23 cases
Comparison of existing patterns
Implementation
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);Limits
- 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.
Postal codes for other countries
- Argentine postal code (CPA)
- Australian postcode
- Brazilian postal code (CEP)
- Canadian postal code
- Czech postal code (PSČ)
- Dutch postal code
- French postal code
- German postal code (PLZ)
- Indian PIN code
- Irish Eircode
- Japanese postal code
- Polish postal code
- Portuguese postal code
- Spanish postal code
- Swedish postal code
- UK postcode
- US ZIP code (ZIP and ZIP+4)
- All postal codes by country