Регулярное выражение только для почтового индекса Англии

У меня есть веб-сайт Asp.Net, и я хочу использовать RegularExpressionValidator, чтобы проверить, является ли почтовый индекс Великобритании английским (т. е. не шотландским, валлийским или северно-ирландским).

Должна быть возможность увидеть, является ли почтовый индекс английским, используя только буквы из первого сегмента (называемого областью почтового индекса). Всего существует 124 области почтовых индексов, и это их список.

Из этого списка следующие области почтовых индексов не находятся в Англии.

  • ZE,KW,IV,HS,PH,AB,DD,PA,FK,G,KY,KA,DG,TD,EH,ML (Шотландия)
  • LL,SY,LD,HR,NP, CF,SA (Уэльс)
  • BT (Северная Ирландия)

Входными данными для регулярного выражения могут быть весь почтовый индекс или только область почтового индекса.

Может ли кто-нибудь помочь мне создать регулярное выражение, которое будет соответствовать, только если данный почтовый индекс является английским?

РЕДАКТИРОВАТЬ - Решение

С помощью нескольких авторов мне удалось создать следующее регулярное выражение, которое я успешно протестировал на более чем 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})?

5
задан Robbie 21 April 2012 в 04:12
поделиться