Rexact
Cheatsheet

Regex code postal néerlandais

Un code postal néerlandais s'écrit « 1071 XX » : 4 chiffres, une espace facultative, 2 lettres. Deux règles passent presque partout inaperçues : le premier chiffre n'est jamais 0, et les paires de lettres SA, SD et SS sont exclues, car elles évoquent des organisations de l'Occupation. Une réponse à 93 votes rend même les lettres facultatives, donc « 1234 » seul passe. Et le folklore voulant que les lettres F, I, O, Q, U et Y soient interdites est périmé : elles sont autorisées pour les nouveaux codes depuis 2005, d'après Wikipédia. Voici le motif de la réponse acceptée à 80 votes, qui est le seul des cinq à tout régler, comparé à quatre tentatives réelles.

/^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i
passe 26/26 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$", "i");
re.test(input);

Limites

  • Valide seulement la FORME (premier chiffre 1 à 9, 2 lettres hors SA, SD, SS) : ne vérifie pas qu'un code est réellement attribué par PostNL, ni qu'il correspond à une rue existante.
  • Les règles viennent de Wikipédia (source de dernier recours : aucune page primaire PostNL n'a pu être consultée) et de la bibliothèque python-stdnum. La règle « premier chiffre 1 à 9 » vaut pour les Pays-Bas européens : les codes 0000 à 0999 sont réservés aux Pays-Bas caribéens, que ce motif rejette.
  • Accepte minuscules et majuscules (drapeau i) alors que la convention est d'écrire les lettres en majuscules : normalisez-les avant stockage. Accepte aussi la forme sans espace (« 1012NP »), à normaliser en « 1012 NP » pour l'affichage.
  • N'exclut pas les lettres F, I, O, Q, U et Y : elles étaient interdites à l'origine mais sont autorisées pour les nouveaux codes depuis 2005, donc un code comme « 1234 FI » est valide. Les rejeter, comme le suggère le folklore, rejetterait de vrais codes.

Codes postaux d’autres pays

Pages liées