我有一个Asp.Net网站,我想使用RegularExpressionValidator检查英国邮政编码是否为英文(即不是苏格兰,威尔士或N.Irish).
应该可以通过仅使用第一个segmant(称为Postcode Area)中的字母来查看邮政编码是否为英文.总共有124个邮政编码区域,这是它们的列表.
从该列表中,以下邮政编码区域不在英格兰.
正则表达式的输入可以是整个邮政编码,也可以只是邮政编码区域.
任何人都可以帮我创建一个只有在给定的邮政编码是英文时才能匹配的正则表达式吗?
编辑 - 解决方案
在几张海报的帮助下,我能够创建以下正则表达式,我已成功测试了1500多个测试用例.
^(AL | B | B [ABDHLNRS] | C [ABHMORTVW] | D [AEHLNTY] | E | E [CNX] | FY | G [LUY] | H [ADGPUX] | I [GM P] | JE | KT | L | L [AENSU] | M | ME | N | N [EGNRW] | O [LX] | P [ELOR] | R [GHM] | S | S [EGKLMNOPRSTW] | T [AFNQ RSW ] | UB | W | W [ACDFNRSV] | YO)\ d {1,2}\S(\ d [\ W] {2})?
小智 9
我已经回答了一次,指出不可能提出100%正确的英格兰唯一的正则表达式(因为邮政编码区域不在于政治边界).
然而,我已经深入研究了这一点,并且......这是可能的,但这是很多工作.
要验证仅限英格兰的邮政编码,您需要排除非英文邮政编码.容易的是:
(我不打算提到英国以外地区的英国式邮政编码,如圣赫勒拿,直布罗陀等.从技术上讲,马恩岛和海峡群岛也不是英国的一部分,但它们距离更近通过,并与英国皇家邮政系统更紧密地联系在一起.)
纯苏格兰邮政编码区域(正如您所提到的):
ZE,KW,IV,HS,PH,AB,DD,PA,FK,G,KY,KA,EH,ML
DG和TD名义上是苏格兰人,在苏格兰大部分时间都是苏格兰人.然而,一些地区延伸到苏格兰 - 英格兰边境,如下:
细目如下:
除了以下英文邮政编码外,DG16在苏格兰:
TD9是苏格兰除了TD9 0T [JPRSTUW]
TD12只有一个部门(TD12 4),大约在英格兰和苏格兰的一半左右:
TD15是最复杂的.有3个部门,其中TD15 2和TD15 9完全在英格兰.
TD15 1分布在英格兰和苏格兰.
以下开头的邮政编码在苏格兰:
......除了这些英文邮政编码:
TD15 1中的所有其他邮政编码均在英格兰,但开头如下:
......除了苏格兰的以下邮政编码外,全部都在英格兰:
英国邮政编码区CA和NE位于英格兰 - 苏格兰边境的另一边,但他们从未延伸到苏格兰.
事实上,英国邮政编码的最后两个字母是基于邮递员实际发布的信息(据我所知),因此不会理所当然地认为它将落入政治边界.因此,如果有一组跨越边界的房屋,则整个邮政编码(即最细粒度的水平)可能不完全位于英格兰或苏格兰境内.例如TD9 0TJ和TD15 1UZ非常接近边界,我不确定他们是否完全在一边.
英格兰 - 威尔士的边界也很复杂,但我会把这作为读者的练习.
\n\n\n英国有 124 个邮政编码区。
\n
- PAF\xc2\xae\n 2012 年 8 月统计数据,通过 英国邮政编码列表(维基百科)。
\n\n我建议将您的问题分成两部分(思考函数):
\n\n邮政编码有效吗?
\n\n邮政编码是英文吗?
\n\n这可以进一步细分:
\n\n! /^(ZE|KW|IV|HS|PH|AB|DD|PA|FK|G|KY|KA|DG|TD|EH|ML)[0-9]/! /^(LL|SY|LD|HR|NP|CF|SA)[0-9]/请注意,语法会根据您的编程语言而有所不同。\n在一个正则表达式中完成所有这些操作很快就会变得难以管理。
\n| 归档时间: |
|
| 查看次数: |
2962 次 |
| 最近记录: |