Похоже, мы собираемся использовать ^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$
, который является слегка измененной версией, описанной Minglis выше.
Однако нам нужно будет выяснить, что именно правила, так как различные перечисленные выше решения, похоже, применяют разные правила относительно того, какие буквы разрешены.
После некоторого исследования мы нашли дополнительную информацию. По-видимому, страница на govtalk.gov.uk указывает на спецификацию почтового индекса govtalk-postcodes . Это указывает на схему XML в XML Schema , которая предоставляет утверждение «псевдорежима» правил почтового индекса.
Мы взяли это и немного поработали над этим следующее выражение:
^((GIR &0AA)|((([A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]))) &[0-9][ABD-HJLNP-UW-Z]{2}))$
Это делает пространство необязательным, но ограничивает вас одним пространством (замените '& amp;' на '{0,} для неограниченных пробелов). Предполагается, что весь текст должен быть в верхнем регистре.
Если вы хотите разрешить строчный регистр с любым количеством пробелов, используйте:
^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$
Это не распространяется на заморские территории и только обеспечивает формат, а не существование разных областей. Он основан на следующих правилах:
Может принимать следующие форматы:
Где:
С наилучшими пожеланиями
Колин