Regex code postal brésilien (CEP)
Le CEP brésilien tient en 8 chiffres, écrits « 00000-000 » avec un tiret après le cinquième. Mais personne ne tape toujours le tiret, et les tentatives réelles se partagent en deux camps qui se trompent chacun d'un côté : le fichier GeoNames, très utilisé, l'exige et rejette « 01001000 » ; une règle de Google libaddressinput le tolère mais ne l'ancre pas, donc « CEP 01001-000 » ou « abc01001000xyz » passent. Une bibliothèque Crystal doit même séparer deux regex, une avec tiret et une sans. Voici un motif ancré qui accepte les deux écritures, comparé à ces trois tentatives réelles.
/^[0-9]{5}-?[0-9]{3}$/passe 22/22 cas
Comparatif des patterns existants
Implémentation
const re = new RegExp("^[0-9]{5}-?[0-9]{3}$", "");
re.test(input);Limites
- Valide seulement la FORME (8 chiffres, tiret facultatif après le cinquième) : ne vérifie pas qu'un CEP est réellement attribué par les Correios. « 00000-000 » passe, alors qu'il n'est très probablement attribué à aucune adresse.
- Le tiret facultatif est une convention des bibliothèques, pas une règle de la page officielle des Correios, qui décrit seulement le format « 00000-000 » : si votre système exige le tiret, supprimez le « ? » du motif.
- Les trois derniers chiffres ont une signification (000-899 localités ou rues, 900-959 codes spéciaux, 970-989 et 999 unités des Correios, selon la page officielle) que ce motif n'encode pas : il ne distingue pas un CEP de rue d'un CEP d'agence.
- Un CEP de deux régions différentes ne se distingue pas par la forme seule : seul un service d'annuaire comme ViaCEP, ou le fichier des Correios, associe un code à une adresse réelle.
Codes postaux d’autres pays
- code postal allemand (PLZ)
- code postal argentin (CPA)
- code postal australien
- code postal britannique (UK postcode)
- code postal canadien
- code postal espagnol
- code postal français
- code postal japonais
- code postal néerlandais
- code postal polonais
- code postal portugais
- code postal suédois
- code postal suisse (NPA)
- code postal tchèque (PSČ)
- Eircode irlandais
- PIN code indien
- ZIP code américain (ZIP et ZIP+4)
- Tous les codes postaux par pays