Regex Italian licence plate
Since 1994, an Italian car plate is written AA 123 AA: 2 letters, 3 digits, 2 letters. According to Wikipedia (last-resort source: the decree text could not be read), letters I, O, Q and U are not used, to avoid confusion with 1 and 0, and the EE series was skipped in 2011 (ED 999 ZZ was followed by EF 000 AA). An html.it Go tutorial regex is not anchored: 'AA123AAX' passes, and every letter is allowed. The @randock library accepts 'AI 123 AA'. Here's a pattern excluding those letters and skipped series, compared against those three real attempts.
/^(?!EE|CC|CD)[A-HJ-NPR-TV-Z]{2} ?[0-9]{3} ?[A-HJ-NPR-TV-Z]{2}$/passes 30/30 cases
Comparison of existing patterns
| Source | pattern | Score on the corpus | ReDoS |
|---|---|---|---|
| html.it (tutoriel Go sur les expressions régulières) — non ancrée et toutes les lettres : « AA123AAX » passe, ainsi que I, O, Q, U ; ne gère pas les espaces de la plaque officielle (« AA 123 AA » rejeté) | [A-Z]{2}[0-9]{3}[A-Z]{2} | 19 / 30 | safe |
| @randock/license-plate-validator (npm, l'entrée est d'abord normalisée) — « [A-Z] » partout : « AI 123 AA », « AO 123 AA », « AA 123 AU » et la série EE passent | ^([A-Z]{2})([0-9]{3}[A-Z]{2})$ | 20 / 30 | safe |
| CodeCornTech (euro-plate-validator) — la meilleure du lot : exclut I, O, Q, U et la série EE ; mais accepte CC et CD, séries jamais attribuées aux voitures | ^(?!EE)[A-HJ-NPR-TV-Z]{2}\s?\d{3}\s?[A-HJ-NPR-TV-Z]{2}$ | 29 / 30 | safe |
Implementation
const re = new RegExp("^(?!EE|CC|CD)[A-HJ-NPR-TV-Z]{2} ?[0-9]{3} ?[A-HJ-NPR-TV-Z]{2}$", "");
re.test(input);Limits
- Valide seulement la FORME : ne vérifie pas que la plaque est attribuée par la Motorizzazione. Aucun texte officiel n'a pu être consulté : les règles (lettres exclues, séries sautées) viennent de Wikipédia, source de dernier recours, et de bibliothèques tierces.
- Exclut les séries EE (sautée en 2011) et CC, CD (réservées aux consulaires et diplomatiques) en préfixe. « AA 000 AA », jamais émise (la première plaque est AA 001 AA), passe pourtant.
- Ne couvre que le format de voiture depuis 1994 : les plaques de moto (AA 00000), les anciens formats (province + numéro, 1976-1994) et les plaques spéciales ne sont pas couverts. Les préfixes réservés Z, Y et X (plaques spéciales) sont acceptés comme des lettres ordinaires.
- L'espace entre les groupes est facultative ; la plaque officielle l'a. Majuscules ASCII seulement : « aa 123 aa » est rejeté ; le tiret n'est pas accepté.