我想知道是否有针对爱尔兰Eircode格式进行验证的最佳实践。到目前为止,根据在第11页上找到的官方规格,我在REGEX中使用JavaScript的最佳尝试是 here 。
(基于文档中的页码的第11页,如果包括封面,则为第12页)
/^[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}$/
我在这里没有找到任何与Eircode相关的问题,所以我想我将打开这一部分,看看其他人的想法,并看看任何人都能想到的更好/更短/更有效的模式。
编辑:根据@Asunez答案删除逗号。
/^[ACDEFHKNPRTVWXY]{1}[0-9]{1}[0-9W]{1}[\ \-]?[0-9ACDEFHKNPRTVWXY]{4}$/
最佳答案
由于@Manwal的答案并未完全应做,因此我尝试缩短OP的正则表达式:(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
这基本上就是您的Regex,只是做了一些更改:
[]
括号内的项目。 C-F
,V-Y
)。在其他地方添加范围没有好处,因为它不会使正则表达式更短。 也可以仅使用lookbehind处理
D6W
,但这比正则表达式更是一门艺术。参见正则表达式演示:here
您还可以将字符类反转为而不是包括给定字符,并且尽管它不会使正则表达式更短,但也值得注意。但是,您需要确保也不包括其他字符(例如点,逗号)。我通过添加
\W
token 来实现。您可以尝试here