Rexact
Cheatsheet

Regex Brazilian licence plate

CONTRAN sets the Mercosul plate at 7 alphanumeric characters in the order LLLNLNN (resolution 780/2019, annex I): three letters, a digit, a letter, two digits, like 'ABC1D23'. The old LLLNNNN format (resolution 231/2007) is written 'ABC-1234', often with a hyphen; both coexist. Real attempts differ mostly on anchoring: validator.js's pt-BR regex has '^' only in its first branch and '$' only in its second, so 'XXABC1234' and 'ABC1D23XYZ' pass; node-placa-mercosul's is not anchored at all. Here's an anchored pattern accepting both formats, compared against those attempts.

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

Comparison of existing patterns

Implementation

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

Limits

  • Valide seulement la FORME : ne vérifie pas que la plaque est attribuée, ni la tranche de lettres de l'État. Aucune lettre n'est exclue par la résolution ; le motif accepte donc les 26 lettres, y compris A à J en 5e position, que l'annexe II réserve à la conversion d'anciennes plaques.
  • Le tiret (facultatif) n'est accepté que pour l'ancien format ; le Mercosul est rejeté avec tiret ou espace (« ABC-1D23 »), la plaque physique n'en ayant pas. Les majuscules sont obligatoires : normalisez avant validation.
  • Les plaques diplomatiques, consulaires (CD, CC, MBR…) et les plaques de collection, d'essai ou de moto à une ligne suivent d'autres règles et ne sont pas couvertes (la bibliothèque automex en gère quelques-unes).
  • Basé sur le texte de 2019 : les modifications ultérieures de la résolution (par exemple la résolution 969/2022 citée dans la presse) n'ont pas été relues.

Licence plates for other countries

Related pages