I'm wondering if there's a best practice for validation for the Irish Eircode format. My best attempt so far, using REGEX in JavaScript, is the following based on the official spec found on page 11 here.
(Page 11 based on the page numbers in the document, or page 12 if you include the cover)
/^[A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{1}[0-9]{1}[0-9,W]{1}[\ \-]?[0-9,A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{4}$/
I didn't find any Eircode related questions on here so I thought I'd open up this one and see what other people thought, and to see what better/shorter/more efficient patterns anyone could come up with.
Edit: Removed commas as per @Asunez answer.
/^[ACDEFHKNPRTVWXY]{1}[0-9]{1}[0-9W]{1}[\ \-]?[0-9ACDEFHKNPRTVWXY]{4}$/
Since @Manwal's answer doesn't exactly do what it should, here is my attempt at shortening the regex for OP:
(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
Updated version supporting the A65 B2CD postcodes - (?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
This is basically what your Regex is, with a few changes:
[]
brackets.C-F
, V-Y
). Elsewhere it's not beneficial to add ranges, as it won't make regex shorter.It is also possible to deal with D6W
exclusively with lookbehind, but this is more of an art than regex.
See Regex Demo: here
You can also invert the character class to not include given characters, and while it doesn't make the regex shorter, it's also worth noting. However, you need to make sure that other characters (like dots, commas) are not included too. I do it by adding the \W
token.
You can try it here