Rexact
Cheatsheet

Regex Argentine postal code (CPA)

The modern Argentine postal code (CPA) is written 'C1426BMD': a province letter, the 4 digits of the old code, then 3 letters for the block face. The province letter is never I or O. A regexpattern.com regex nonetheless writes '[A-HJ-TP-Z]', whose J-T and P-Z ranges overlap: O passes. django-localflavor writes '\D{3}' instead of three letters, so 'C1425!!!' is accepted. And the GeoNames file makes everything optional: '1425ABC' and 'C1425' pass. Here's a strict pattern that also accepts the old 4-digit code, compared against those real attempts.

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

Comparison of existing patterns

Implementation

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

Limits

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

Postal codes for other countries

Related pages