我有一个 Asp.Net 网站,我想使用 RegularExpressionValidator 来检查英国邮政编码是否为英语(即它不是苏格兰、威尔士或 N.Irish)。
应该可以通过仅使用第一个段(称为邮政编码区)中的字母来查看邮政编码是否为英文。总共有 124 个邮政编码区,这是它们的列表。
从该列表中,以下邮政编码区域不在英格兰。
- ZE,KW,IV,HS,PH,AB,DD,PA,FK,G,KY,KA,DG,TD,EH,ML(苏格兰)
- LL、SY、LD、HR、NP、CF、SA(威尔士)
- 英国电信(北爱尔兰)
正则表达式的输入可能是整个邮政编码,也可能只是邮政编码区域。
谁能帮我创建一个仅在给定邮政编码为英语时才匹配的正则表达式?
编辑 - 解决方案
在几张海报的帮助下,我能够创建以下正则表达式,我已经成功地针对 1500 多个测试用例进行了测试。
^(AL|B|B[ABDHLNRS]|C[ABHMORTVW]|D[AEHLNTY]|E|E[CNX]|FY|G[LUY]|H[ADGPUX]|I[GMP]|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})?