我想知道是否有爱尔兰Eircode格式验证的最佳实践。到目前为止,我最好的尝试是在JavaScript中使用REGEX,下面是基于第11页上的官方规范**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}$/
型
4条答案
按热度按时间oyt4ldly1#
由于@Manwal的答案并没有完全做到它应该做的事情,下面是我尝试缩短OP的正则表达式:
第一个月
更新版本支持A65 B2CD邮政编码-
(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
这基本上就是你的Regex,有一些变化:
[]
方括号内的项。C-F
,V-Y
)。在其他地方,添加范围没有好处,因为它不会使regex更短。也可以用lookbehind专门处理
D6W
,但这比正则表达式更有艺术性。请参见Regex Demo:here
你也可以反转字符类来不包含给定的字符,虽然它不会使正则表达式更短,但也值得注意。但是,您需要确保其他字符(如点,逗号)也不包括在内。我通过添加
\W
令牌来实现。你可以试试here
oymdgrw72#
根据产品指南第1.5.4章,允许的标志为:
| 岗位|允许的字符| Allowed characters |
| ------------|--| ------------ |
| 一个|A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y、字母顺序为| A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y |
| 二个|0-9岁| 0-9 |
| 三个|0-9,但对于D 6 W,W除外| 0-9 with the exception of W for D6W |
| 四个|0-9,字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y、字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y| 0-9, A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y |
| 五个|0-9,字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y、字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y| 0-9, A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y |
| 六个|0-9,字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y、字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y| 0-9, A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y |
| 七个|0-9,字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y、字母A、C、D、E、F、H、K、N、P、R、T、V、W、X、Y| 0-9, A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y |
每个路由关键字必须包含字母和两位数字,除了一个特定情况,即
D6W
代码。因此,以
A5W
、C6W
、V0W
开头的代码是无效的。根据第1.5.1章“储存和展示建议”,
存储在数据库中的代码不应用空格或破折号分隔;仅应使用空格来分隔用于显示的代码。
假设上面的情况,正确的正则表达式应该如下所示:
/([AC-FHKNPRTV-Y]\d{2}|D6W)[0-9AC-FHKNPRTV-Y]{4}/
个Regex online tester
Ericode guide的
wbgh16ku3#
更新了这个答案,避免了char
B
。你可以试试这个:字符串
产品描述:
型
zbsbpyhn4#
从hywak answer开始,并遵循其他评论建议,这是我的php正则表达式:
字符串
我添加了^和$来定义字符串的开始和结束。添加了\s以考虑空间并接受XXX XXXX格式。
关于字母/数字和字母格式的参考,以避免:https://en.wikipedia.org/wiki/List_of_postal_codes
Regex tester的
下面是通过测试的最后代码的解释: