Rexact
Cheatsheet

Regex code postal argentin (CPA)

Le code postal argentin moderne (CPA) s'écrit « C1426BMD » : une lettre de province, les 4 chiffres de l'ancien code, puis 3 lettres désignant la face de l'îlot. La lettre de province n'est jamais I ni O. Une regex de regexpattern.com écrit pourtant « [A-HJ-TP-Z] », dont les plages J-T et P-Z se chevauchent : le O passe. django-localflavor écrit « \D{3} » au lieu de trois lettres, donc « C1425!!! » est accepté. Et le fichier GeoNames rend tout facultatif : « 1425ABC » et « C1425 » passent. Voici un motif strict qui accepte aussi l'ancien code à 4 chiffres, comparé à ces tentatives réelles.

/^(?:[A-HJ-NP-Z][0-9]{4}[A-Z]{3}|[1-9][0-9]{3})$/
passe 27/27 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:[A-HJ-NP-Z][0-9]{4}[A-Z]{3}|[1-9][0-9]{3})$", "");
re.test(input);

Limites

  • Valide seulement la FORME (une lettre de province hors I et O, 4 chiffres, 3 lettres ; ou l'ancien code à 4 chiffres) : ne vérifie pas qu'un code est réellement attribué par Correo Argentino, ni que la lettre de province correspond à la province du code à 4 chiffres.
  • L'acceptation de l'ancien code à 4 chiffres (« 1426 ») est un choix de ce motif : le guide officiel le marque « no recomendado » et Correo Argentino dit qu'il n'est plus mis à jour depuis 1974. Si votre système exige un CPA, retirez la deuxième alternative.
  • N'accepte que la forme que le guide officiel recommande : majuscules, sans espace ni tiret. « c1426bmd » et « C 1426 BMD », listés « no recomendado », sont rejetés : normalisez la saisie avant validation.
  • Aucune source officielle consultée ne restreint les lettres I ou O dans les trois lettres finales : le motif les accepte. Seule la lettre de province, tirée de la liste ISO 3166-2:AR, les exclut.

Codes postaux d’autres pays

Pages liées