Regex Belgian licence plate
The current Belgian plate is written 1-ABC-123: an index digit from 1 to 9, three letters and three digits. Earlier formats are ABC-123 (1973-2008) and 123-ABC (2008-2010). A verified quirk: the BE validate() function of the npm package @randock/license-plate-validator ends with a fallback regex '^(.+)$', so it returns true for 'hello world', 'x' or '0-ABC-123'. Other real attempts accept index 0 or reject the current format. Here's a strict pattern covering the three formats, compared against those three attempts.
/^(?:[1-9]-[A-Z]{3}-[0-9]{3}|[A-Z]{3}-[0-9]{3}|[0-9]{3}-[A-Z]{3})$/passes 21/21 cases
Comparison of existing patterns
| Source | pattern | Score on the corpus | ReDoS |
|---|---|---|---|
| @randock/license-plate-validator (npm) — validate() termine par une regex de repli « ^(.+)$ » : toute chaîne non vide est valide (« hello world », « 0-ABC-123 » passent) ; l'entrée est d'abord normalisée | ^(.+)$ | 7 / 21 | safe |
| eu-licence-validator (Go, WASM) — l'index « (\d) » accepte 0 ; accepte aussi « 1234ABC » ; rejette les formats à lettre d'index | ^([A-Z]{3})[-\s]?(\d{3})$|^(\d)-([A-Z]{3})-(\d{3})$|^(\d{4})[-\s]?([A-Z]{3})$ | 18 / 21 | safe |
| dossierdata/license-plate (PHP, cinq regex réunies par |) — l'index « [\d] » accepte 0 ; formats de 1971-73 (X.999.X) et 9-999-XXX non prévus officiellement ; majuscules et minuscules | ^[a-zA-Z0-9]{1}[\d]{3}[a-zA-Z]{1}$|^[a-zA-Z]{3}[\d]{3}$|^[\d]{3}[a-zA-Z]{3}$|^[\d]{1}[a-zA-Z]{3}[\d]{3}$|^[\d]{4}[a-zA-Z]{3}$ | 14 / 21 | safe |
Implementation
const re = new RegExp("^(?:[1-9]-[A-Z]{3}-[0-9]{3}|[A-Z]{3}-[0-9]{3}|[0-9]{3}-[A-Z]{3})$", "");
re.test(input);Limits
- Valide seulement la FORME : ne vérifie pas que la plaque est attribuée. Aucun texte officiel du format n'a été consulté : les règles viennent de Wikipédia (néerlandais), source de dernier recours. La plaque « 2-AAA-001 » (première de la série 2, pressée le 21 décembre 2020) y est citée.
- Les plaques à lettre d'index (M motos, T taxis, O et Q collection et remorques, CD diplomatiques…) et la série à venir 1-123-ABC ne sont pas couvertes : elles sont rejetées. Les lettres éventuellement exclues par l'administration n'ont pas pu être confirmées et ne sont pas filtrées.
- Exige les tirets des plaques officielles, majuscules uniquement : « 1ABC123 » et « 1-abc-123 » sont rejetés.
- Les anciens formats ABC-123 et 123-ABC restent acceptés bien qu'ils ne soient plus attribués ; si vous ne validez que des plaques récentes, retirez les deux dernières alternatives.