Regex Irish Eircode
An Irish Eircode has 7 characters: a routing key ('A65', or the unique case 'D6W') and a 4-character identifier. Many letters are excluded: only A C D E F H K N P R T V W X Y are used. The accepted Stack Overflow answer (31 votes) puts '^' on the first alternative only, so 'XD6W1234' passes. Another, at 14 votes, quotes the official rule to write 'always A65 F4E2, never A65F4E2' and then offers a regex rejecting the spaced form. And validator.js's, one of the most downloaded npm packages, requires a space and accepts forbidden letters. Here's a strict pattern, compared against those real attempts.
/^(?:D6W|[AC-FHKNPRTV-Y][0-9]{2}) ?[0-9AC-FHKNPRTV-Y]{4}$/passes 26/26 cases
Comparison of existing patterns
| Source | pattern | Score on the 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 | safe |
| 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 | safe |
| 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 | safe |
| 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 | safe |
Implementation
const re = new RegExp("^(?:D6W|[AC-FHKNPRTV-Y][0-9]{2}) ?[0-9AC-FHKNPRTV-Y]{4}$", "");
re.test(input);Limits
- 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.
Postal codes for other countries
- Argentine postal code (CPA)
- Australian postcode
- Brazilian postal code (CEP)
- Canadian postal code
- Czech postal code (PSČ)
- Dutch postal code
- French postal code
- German postal code (PLZ)
- Indian PIN code
- Japanese postal code
- Polish postal code
- Portuguese postal code
- Spanish postal code
- Swedish postal code
- Swiss postal code (PLZ/NPA)
- UK postcode
- US ZIP code (ZIP and ZIP+4)
- All postal codes by country