Rexact
Cheatsheet

Regex code postal australien

Un code postal australien a 4 chiffres, mais pas n'importe lesquels : les blocs attribués sont 0200-0299, 0800-0999 et 1000-9999. Une réponse Stack Overflow (2 votes) énumère les plages à la main et oublie 2915 à 2999 et 7500 à 7799, soit 385 codes de plages valides (ACT, Nouvelle-Galles du Sud, Tasmanie). Elle n'ancre en plus qu'une alternative sur sept, donc « 20000 » passe. Une règle LeadsHook a le même défaut d'ancrage, et la plus répandue, « ^\d{4}$ », laisse passer « 0000 » et « 0100 ». Voici un motif ancré qui suit les blocs d'Australia Post, comparé à ces tentatives réelles.

/^(?:0[289][0-9]{2}|[1-9][0-9]{3})$/
passe 28/28 cas

Comparatif des patterns existants

Implémentation

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

Limites

  • Valide seulement la FORME (4 chiffres dans un bloc attribué) : ne vérifie pas qu'un code est réellement utilisé. Les blocs d'Australia Post sont des plages attribuées, pas la liste des codes en service ; seul un fichier de correspondance code-localité confirme l'existence d'un code.
  • Wikipédia et Australia Post divergent d'une unité sur la limite entre l'ACT et la Nouvelle-Galles du Sud (2618 ou 2619) : sans conséquence ici, ce motif accepte tout 2600 à 2999, mais à connaître si vous distinguez les deux territoires.
  • Les codes 0200-0299 (ACT) et 0900-0999 sont acceptés, mais selon Wikipédia une partie de ces plages est réservée aux boîtes postales et aux gros clients : un code accepté par ce motif n'est pas forcément un code d'adresse de livraison.
  • Le zéro initial est significatif (« 0872 » est un vrai code) : stockez le code en texte, pas en entier, sinon il devient « 872 » et échoue à ce motif.

Codes postaux d’autres pays

Pages liées