Regex plaque d'immatriculation allemande
Une plaque allemande s'écrit B-AB 1234 : un code de district de 1 à 3 lettres, 1 ou 2 lettres de série, un nombre de 1 à 9999 sans zéro initial, et un suffixe facultatif E (électrique) ou H (historique). L'annexe 4 de la FZV limite en plus la plaque à 8 caractères au total. La bibliothèque validator.js, avec sa liste de districts de 2,6 ko, accepte pourtant « B-AB 0 » et « B-AB 0123 » (testé). Les autres tentatives réelles ne connaissent pas la limite de 8 caractères : « MÜN-AB 1234 » en a 9. Voici un motif qui suit la FZV, comparé à ces trois tentatives.
/^(?![A-ZÄÖÜ]{3}-[A-Z]{2} [0-9]{4})[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [1-9][0-9]{0,3}[EH]?$/passe 24/24 cas
Comparatif des patterns existants
| Source | pattern | Score sur le corpus | ReDoS |
|---|---|---|---|
| eu-licence-validator (Go, WASM) — « d{1,4} » accepte 0 et les zéros initiaux (« B-AB 0123 ») ; séparateurs facultatifs (« B-AB123 », « B AB 123 » passent) ; pas de limite de 8 caractères ; minuscules rejetées | ^([A-Z]{1,3})[s-]?([A-Z]{1,2})[s-]?(d{1,4})([EH]?)$ | 15 / 24 | sûr |
| kennzeichen (npm) — la plus proche de la FZV (chiffre initial 1-9, suffixe E/H) mais drapeau i : « b-ab 123 » passe ; pas de limite de 8 caractères ; « MÜN-AB 1234 » et un district inventé passent | ^[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [1-9][0-9]{0,3}[EH]?$ | 22 / 24 | sûr |
| CodeCornTech (euro-plate-validator) — pas de suffixe E/H (« K-AB 12E » rejeté) ; « B-AB 0123 » accepté ; pas de limite de 8 caractères | ^[A-ZÄÖÜ]{1,3}-[A-Z]{1,2}\s?\d{1,4}$ | 18 / 24 | sûr |
Implémentation
const re = new RegExp("^(?![A-ZÄÖÜ]{3}-[A-Z]{2} [0-9]{4})[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [1-9][0-9]{0,3}[EH]?$", "");
re.test(input);Limites
- Valide seulement la FORME : ne connaît pas la liste officielle des codes de district (KBA) : « XXX-AB 12 » a la bonne forme sans que « XXX » existe. Une table de districts doit être ajoutée si vous devez distinguer les codes attribués.
- Applique la limite de 8 caractères de l'annexe 4 de la FZV pour les districts à 3 lettres avec 2 lettres de série et 4 chiffres (9 caractères), mais l'ambiguïté du décompte du suffixe E ou H n'a pas été tranchée par la source consultée.
- La regex de validator.js (de-DE), de 2546 caractères, dépasse la limite de 2000 caractères du moteur de ce site et n'est donc pas dans le tableau : comme elle accepte « B-AB 0 », « B-AB 0123 » et « B-AB 12 E » (testé en 13.15.35), elle est citée ici plutôt que scorée. Les combinaisons exclues en pratique (SS, NS, HJ, KZ, SA…) ne figurent pas dans la loi, qui parle seulement de « guten Sitten » : elles dépendent de pratiques administratives locales et ne sont pas filtrées.
- Exige le tiret et l'espace de la plaque officielle, en majuscules : « B AB 123 » et « B-AB123 » sont rejetés. Les plaques spéciales (diplomatiques, saisonnières, Zoll…) ne sont pas couvertes.
Plaques d’immatriculation d’autres pays
- plaque d'immatriculation belge
- plaque d'immatriculation britannique (format actuel)
- plaque d'immatriculation espagnole (format actuel)
- plaque d'immatriculation italienne
- plaque d'immatriculation néerlandaise (kenteken)
- plaque d'immatriculation polonaise
- plaque d'immatriculation portugaise
- plaque d'immatriculation SIV
- Toutes les plaques d’immatriculation par pays