Regex Eircode irlandais
Un Eircode irlandais a 7 caractères : une clé d'acheminement (« A65 », ou le cas unique « D6W ») et un identifiant de 4 caractères. Beaucoup de lettres sont exclues : seules A C D E F H K N P R T V W X Y sont utilisées. La réponse acceptée sur Stack Overflow (31 votes) place « ^ » sur la première alternative seulement, donc « XD6W1234 » passe. Une autre, à 14 votes, cite la règle officielle d'écrire « toujours A65 F4E2, jamais A65F4E2 » puis propose une regex qui rejette la forme avec espace. Et celle de validator.js, un des paquets npm les plus téléchargés, exige une espace et accepte des lettres interdites. Voici un motif strict, comparé à ces tentatives réelles.
/^(?:D6W|[AC-FHKNPRTV-Y][0-9]{2}) ?[0-9AC-FHKNPRTV-Y]{4}$/passe 26/26 cas
Comparatif des patterns existants
| Source | pattern | Score sur le corpus | ReDoS |
|---|---|---|---|
| Stack Overflow (31 votes, réponse acceptée) — « ^ » n'ancre que la première alternative : « XD6W1234 » passe ; tiret accepté comme séparateur (« A65-F4E2 »), absent du format | (?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$ | 24 / 26 | sûr |
| Stack Overflow (14 votes) — ni ancres ni séparateur : « XD6W1234 » et « A65F4E2XYZ » passent, mais la forme officielle « A65 F4E2 » est rejetée | ([AC-FHKNPRTV-Y]\d{2}|D6W)[0-9AC-FHKNPRTV-Y]{4} | 18 / 26 | sûr |
| validator.js (IE) — espace obligatoire (« A65F4E2 » rejeté), « \w{4} » accepte lettres interdites et underscore, « B12 ABCD » et « Z12 3456 » passent | ^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$ | 18 / 26 | sûr |
| Stack Overflow (4 votes) — « [AC-Y] » autorise les lettres interdites G, I, J, L, M, O, Q, S, U : « A65 F4EO » et « A65 FIE2 » passent ; « [0-9W] » accepte « A6W ABCD » | ^[AC-Y]{1}[0-9]{1}[0-9W]{1}[ \-]?[0-9AC-Y]{4}$ | 23 / 26 | sûr |
Implémentation
const re = new RegExp("^(?:D6W|[AC-FHKNPRTV-Y][0-9]{2}) ?[0-9AC-FHKNPRTV-Y]{4}$", "");
re.test(input);Limites
- Valide seulement la FORME (clé lettre-chiffre-chiffre ou D6W, puis 4 caractères parmi les lettres autorisées et les chiffres) : ne vérifie pas que la clé d'acheminement existe parmi les 139 clés attribuées. « D19 F5P2 » passe, alors que D19 n'existe pas, comme D21 et D23 ; seule une énumération complète des clés, que ce motif ne reprend pas, les distinguerait.
- Les règles détaillées (lettres autorisées, D6W) viennent d'AutoAddress, un fournisseur de données licencié Eircode, et non de la page officielle eircode.ie, qui ne cite que l'exclusion de la lettre O et l'exemple A65 F4E2. Le guide produit officiel de l'Eircode n'a pas été retrouvé en ligne.
- Accepte les deux écritures, avec espace (« A65 F4E2 », forme d'affichage officielle) ou sans (« A65F4E2 », forme de stockage officielle) : normalisez en majuscules sans espace avant stockage, avec espace pour l'affichage.
- N'accepte que des majuscules ASCII : « a65 f4e2 » est rejeté. Normalisez la casse avant validation si vos utilisateurs saisissent en minuscules.
Codes postaux d’autres pays
- code postal allemand (PLZ)
- code postal argentin (CPA)
- code postal australien
- code postal brésilien (CEP)
- code postal britannique (UK postcode)
- code postal canadien
- code postal espagnol
- code postal français
- code postal japonais
- code postal néerlandais
- code postal polonais
- code postal portugais
- code postal suédois
- code postal suisse (NPA)
- code postal tchèque (PSČ)
- PIN code indien
- ZIP code américain (ZIP et ZIP+4)
- Tous les codes postaux par pays