Rexact
Cheatsheet

Regex plaque d'immatriculation britannique (format actuel)

Depuis 2001, une plaque britannique s'écrit AB12 CDE : 2 lettres de zone, un identifiant d'âge à 2 chiffres, 3 lettres aléatoires. Le DVLA publie les règles : l'identifiant d'âge vaut 02 à 29 (mars-août) ou 51 à 79 (septembre-février), jamais 00, 01 ni 30 à 50, et les lettres de zone n'utilisent jamais I, Q ni Z. Les trois tentatives réelles que j'ai relues sont des « 2 lettres, 2 chiffres, 3 lettres » : « AB00 CDE », « AB30 CDE » et « IA12 ABC » passent partout. Voici un motif qui borne l'identifiant d'âge et les lettres de zone, comparé à ces tentatives.

/^[A-HK-PRSVWY][A-HJ-NPR-Y](?:0[2-9]|[12][0-9]|5[1-9]|[67][0-9]) ?[A-Z]{3}$/
passe 26/26 cas

Comparatif des patterns existants

SourcepatternScore sur le corpusReDoS
Gist harry-jones (dit tiré du site du DVLA, repris par scrubadub) — branche « Current » : n'importe quelles 2 lettres et 2 chiffres : IA12 ABC, AB00 CDE, AB30 CDE passent ; pas d'espace (« AB12 CDE » est rejeté) ; regex à 8 formats réunis par |(?<Current>^[A-Z]{2}[0-9]{2}[A-Z]{3}$)|(?<Prefix>^[A-Z][0-9]{1,3}[A-Z]{3}$)|(?<Suffix>^[A-Z]{3}[0-9]{1,3}[A-Z]$)|(?<DatelessLongNumberPrefix>^[0-9]{1,4}[A-Z]{1,2}$)|(?<DatelessShortNumberPrefix>^[0-9]{1,3}[A-Z]{1,3}$)|(?<DatelessLongNumberSuffix>^[A-Z]{1,2}[0-9]{1,4}$)|(?<DatelessShortNumberSufix>^[A-Z]{1,3}[0-9]{1,3}$)|(?<DatelessNorthernIreland>^[A-Z]{1,3}[0-9]{1,4}$)19 / 26sûr
dossierdata/license-plate (PHP) — même grammaire « XX99 XXX; 2001-now » : tout couple de lettres et tout identifiant à 2 chiffres passent ; l'espace de la plaque officielle est rejeté^[A-Z]{2}[\d]{2}[A-Z]{3}$19 / 26sûr
CodeCornTech (euro-plate-validator) — accepte l'espace facultatif, mais mêmes lacunes : IA12 ABC, AZ12 ABC, AB00 CDE, AB30 CDE et AB80 CDE passent^[A-Z]{2}\d{2}\s?[A-Z]{3}$14 / 26sûr

Implémentation

const re = new RegExp("^[A-HK-PRSVWY][A-HJ-NPR-Y](?:0[2-9]|[12][0-9]|5[1-9]|[67][0-9]) ?[A-Z]{3}$", "");
re.test(input);

Limites

  • Valide seulement la FORME du format courant (depuis 2001) : ne vérifie pas que la plaque est attribuée par le DVLA. Le motif borne la première lettre de zone à la liste d'INF104 et exclut I, Q, Z en deuxième lettre, mais la table complète des zones (qui limite la deuxième lettre selon la première) n'est pas reprise : « AY12 ABC » passe même si cette combinaison n'est pas attribuée.
  • Les formats antérieurs (A123 ABC, ABC 123A, 1234 AB…) et les plaques d'Irlande du Nord (ABZ 1234) définis par le SI 2001/561 ne sont pas couverts : ils sont rejetés par ce motif.
  • Les identifiants d'âge 80 et plus ne sont pas listés par INF104 : ils sont rejetés ici, et il faudra mettre le motif à jour quand le DVLA les émettra. Les identifiants 27 à 29 et 77 à 79 sont listés mais pas encore émis ; ils sont acceptés.
  • Le DVLA ne dit rien des lettres I et Q parmi les 3 lettres aléatoires : le motif accepte n'importe quelle lettre. Majuscules ASCII seulement ; l'espace est facultatif (la plaque officielle l'a).

Plaques d’immatriculation d’autres pays

Pages liées