Согласно страница из архива, которую я нашел, спецификация:
Pattern w/o space RLE General
AN NAA ANNAA A1 N2 A2 | A{1,2} N{2,3} A2
ANN NAA ANNNAA A1 N3 A2 |
AAN NAA AANNAA A2 N2 A2 |
AANN NAA AANNNAA A2 N3 A2 |
ANA NAA ANANAA A1 N1 A1 N1 A2 | A{1,2} N1 A1 N1 A2
AANA NAA AANANAA A2 N1 A1 N1 A2 |
GIR 0AA We are British and for every rule there must be an
equal and opposite exception.
Возможно, это слишком хлопотно, чтобы возиться с проверкой страницы. Помните, вам придется поддерживать его, если когда-либо произойдет изменение. Рассмотрим минимальный чек, например ^[A-Z].+[0-9].+[A-Z]$. Не будьте «героем» и шаблонным кодом.
Если вы действительно хотите проверить его на соответствие этой спецификации, общие правила (после удаления пробелов):
^([A-Z]{1,2})([0-9]{2,3})([A-Z]{2})$/i
^([A-Z]{1,2})([0-9])([A-Z])([0-9])([A-Z]{2})$/i
^GIR0AA$/i
Как указал @Stefan: /i для нечувствительности к регистру.
Сделав это, вы можете сопоставить группы (отсюда фигурные скобки) и проверить, соответствуют ли буквы ограниченным диапазонам в документе. На этом этапе вы даже можете вести список разрешенных однобуквенных и двухбуквенных кодов для областей почтовых индексов.
Общее правило для отделения Incode (фрагмент перед пробелом) от Outcode (фрагмент после пробела), по-видимому, состоит в том, что Outcode начинается с последнего числа (даже для GIR).
Честно говоря, я бы перестал заморачиваться после базовой проверки. Если стоит проверить более полную спецификацию, то, вероятно, стоит проверить, существует ли область почтового индекса, и если это того стоит, вы можете также подключиться к реальной службе, которая извлекает адрес из почтового индекса. Эти службы с радостью сообщат вам, что почтовый индекс не существует, что является более надежной и поддерживаемой проверкой, чем вы когда-либо хотели написать.
[Редактировать: есть еще одна спецификация в Википедии, конечно]
person
Phil H
schedule
18.06.2012
/iделает ваше регулярное выражение нечувствительным к регистру:[A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?{1,2}[0-9][ABD-HJLN-UW-Z]{2}|(GIR){3} 0A{2})$/gi- person Stefan   schedule 18.06.2012DN15 9YGпроверяет, аdn159ygнет, и оба являются допустимыми почтовыми индексами. - person Phil Young   schedule 18.06.2012UK Postcode Regex— это лучший результат Google; так что эээ.. ;) - person MackieeE   schedule 25.03.2014