Rexact
Cheatsheet

Regex code postal polonais

La Poste polonaise précise dans ses règles d'adressage que le code s'écrit « XX-XXX », sans espace entre les chiffres, mais qu'on peut en laisser autour du tiret : « 00 - 901 » est donc tolérée. Aucune des trois tentatives réelles ne l'accepte. Le fichier GeoNames et une règle Google exigent un tiret collé ; un gist très repris accepte à la place un tiret, une espace ou rien du tout entre les deux groupes, donc « 00 901 » et « 00901 » passent, justement l'écriture que l'opérateur déconseille. Voici un motif qui suit la règle de l'opérateur, comparé à ces trois tentatives réelles.

/^[0-9]{2} ?- ?[0-9]{3}$/
passe 23/23 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[0-9]{2} ?- ?[0-9]{3}$", "");
re.test(input);

Limites

  • Valide seulement la FORME (2 chiffres, tiret, 3 chiffres) : ne vérifie pas qu'un code figure dans l'Oficjalny Spis Pocztowych Numerów Adresowych, le registre officiel de la Poste polonaise, que je n'ai pas pu consulter. Un code peut donc être bien formé sans être attribué (« 00-000 », par exemple).
  • Accepte les espaces autour du tiret (« 00 - 901 ») parce que la Poste polonaise les tolère, mais ne les normalise pas : retirez-les avant de stocker le code, sinon deux écritures du même code coexisteront dans votre base.
  • Aucun intervalle ni premier chiffre interdit n'est documenté par l'opérateur : le motif n'en impose aucun, y compris le 0 initial de Varsovie. Une regex ne peut pas savoir quels codes existent réellement.
  • Ne gère pas le préfixe « PL- » parfois ajouté dans l'adressage international : il n'est pas défini par l'opérateur dans le document consulté, il doit être retiré avant validation.

Codes postaux d’autres pays

Pages liées