Rexact
Cheatsheet

Regex Polish postal code

Poczta Polska states in its addressing rules that the code is written 'XX-XXX', with no space between digits, but that spaces may surround the hyphen: '00 - 901' is therefore tolerated. None of the three real attempts accepts it. The GeoNames file and a Google rule require a tight hyphen; a widely reused gist instead accepts a hyphen, a space or nothing between the two groups, so '00 901' and '00901' pass, which is exactly the spelling the operator discourages. Here's a pattern following the operator's rule, compared against those three real attempts.

/^[0-9]{2} ?- ?[0-9]{3}$/
passes 23/23 cases

Comparison of existing patterns

Implementation

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

Limits

  • 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.

Postal codes for other countries

Related pages