Rexact
Cheatsheet

Regex Portuguese licence plate

Portugal has had four plate formats: AA-00-00 (until 1992), 00-00-AA, 00-AA-00 and, since March 2020, AA-00-AA, printed without hyphens. A typo in validator.js, a 23,000-star library, turned a character list into a range: '[ -·]' runs from the space to the middle dot and contains digits, uppercase letters, '!' and '@'. Tested result on version 13.15.35: 'AB51234' and '12!AB@34' are accepted as Portuguese plates. The two other real attempts are stuck in one era: one only knows AA-00-AA, the other only the three old hyphenated formats. Here's a pattern covering all four formats, compared against those three real attempts.

/^(?:[A-Z]{2}([- ]?)[0-9]{2}\1[0-9]{2}|[0-9]{2}([- ]?)[A-Z]{2}\2[0-9]{2}|[0-9]{2}([- ]?)[0-9]{2}\3[A-Z]{2}|[A-Z]{2}([- ]?)[0-9]{2}\4[A-Z]{2})$/
passes 26/26 cases

Comparison of existing patterns

Implementation

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

Limits

  • Valide seulement la FORME (quatre dispositions de deux lettres et de quatre chiffres) : ne vérifie pas que la plaque est attribuée par l'IMT, ni la cohérence de l'époque (« 99-ZZ-99 » est la dernière plaque de la série 00-AA-00 d'après Wikipédia). Les lettres de chaque disposition ne sont pas bornées : « KW », « YZ » (K, W et Y n'étaient pas utilisées avant 2020) passent.
  • Le motif accepte le séparateur tiret, espace ou aucun, mais le même partout dans une plaque : « AB-12 CD » (séparateurs mélangés) est rejeté. Les plaques AA-00-AA sont imprimées sans tirets d'après Wikipédia : normalisez-les avant stockage.
  • Les dates des formats viennent en partie de Wikipédia (source de dernier recours) : la page de l'IMT consultée ne les cite pas toutes. Les formats spéciaux (plaques d'historique, de remorque, de diplomate) ne sont pas couverts.
  • Majuscules ASCII seulement : « ab-12-cd » est rejeté. Normalisez la casse avant validation si vos utilisateurs saisissent en minuscules.

Licence plates for other countries

Related pages