Regex UK vehicle registration (current format)
Since 2001, a British plate is written AB12 CDE: 2 area letters, a 2-digit age identifier, 3 random letters. The DVLA publishes the rules: the age identifier is 02 to 29 (March-August) or 51 to 79 (September-February), never 00, 01 or 30 to 50, and area letters never use I, Q or Z. The three real attempts I read are all '2 letters, 2 digits, 3 letters': 'AB00 CDE', 'AB30 CDE' and 'IA12 ABC' pass everywhere. Here's a pattern bounding the age identifier and the area letters, compared against those attempts.
/^[A-HK-PRSVWY][A-HJ-NPR-Y](?:0[2-9]|[12][0-9]|5[1-9]|[67][0-9]) ?[A-Z]{3}$/passes 26/26 cases
Comparison of existing patterns
Implementation
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);Limits
- 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).