Skip to main content
Форматы почтовых индексов ЕС: страновой справочник для разработчиков
Guides

Форматы почтовых индексов ЕС: страновой справочник для разработчиков

Почтовые индексы в Европе заметно различаются по длине, формату и смыслу. Справочник по 27 странам ЕС, Великобритании, Швейцарии и Норвегии с паттернами валидации.

Brent van der Heiden5 min read
#почтовые индексы#европейские почтовые индексы#валидация адресов#геокодирование#eu data#regex

Каждый разработчик, который делал форму адреса для европейских покупателей, рано или поздно понимает: единого европейского формата почтового индекса нет. У каждой страны свой, и различия между ними существенные. Здесь собран справочник по 27 странам ЕС и ключевым европейским странам вне ЕС, с регулярными выражениями и советами по проверке индексов в рабочей системе.

Общая схема

Европейские почтовые индексы делятся примерно на четыре группы:

  1. 5-значные цифровые: Германия, Франция, Италия, Испания, Финляндия, Хорватия, Эстония, Греция, Литва, Словакия.
  2. 4-значные цифровые: Бельгия, Болгария, Венгрия, Австрия, Швейцария, Лихтенштейн, Люксембург, Норвегия, Словения, Дания.
  3. Буквенно-цифровые фиксированного формата: Нидерланды (4 цифры плюс 2 буквы), Ирландия (Eircode, 7 буквенно-цифровых символов), Мальта (3 буквы плюс 4 цифры).
  4. Иерархические буквенно-цифровые: Великобритания (переменной длины, двухчастный).

Есть и исключения: в Швеции 5 цифр с пробелом после третьей (123 45), в Польше 5 цифр с дефисом после второй (00-001), в Чехии 5 цифр с пробелом после третьей (110 00).

Справочник по ЕС-27

СтранаISOФорматПримерRegex
АвстрияAT4 цифры1010^\d{4}$
БельгияBE4 цифры1000^\d{4}$
БолгарияBG4 цифры1000^\d{4}$
ХорватияHR5 цифр10000^\d{5}$
КипрCY4 цифры1010^\d{4}$
ЧехияCZNNN NN110 00^\d{3} ?\d{2}$
ДанияDK4 цифры1050^\d{4}$
ЭстонияEE5 цифр10111^\d{5}$
ФинляндияFI5 цифр00100^\d{5}$
ФранцияFR5 цифр75008^\d{5}$
ГерманияDE5 цифр10115^\d{5}$
ГрецияGRNNN NN105 63^\d{3} ?\d{2}$
ВенгрияHU4 цифры1051^\d{4}$
ИрландияIEEircodeD02 X285^[A-Z]\d[\dW] ?[A-Z0-9]{4}$
ИталияIT5 цифр00184^\d{5}$
ЛатвияLVLV-NNNNLV-1050^LV-\d{4}$
ЛитваLTLT-NNNNNLT-01100^LT-\d{5}$
ЛюксембургLU4 цифры1234^\d{4}$
МальтаMTLLL NNNNVLT 1234^[A-Z]{3} ?\d{4}$
НидерландыNLNNNN LL1011 AB^\d{4} ?[A-Z]{2}$
ПольшаPLNN-NNN00-001^\d{2}-\d{3}$
ПортугалияPTNNNN-NNN1000-001^\d{4}-\d{3}$
РумынияRO6 цифр010001^\d{6}$
СловакияSKNNN NN811 01^\d{3} ?\d{2}$
СловенияSI4 цифры1000^\d{4}$
ИспанияES5 цифр28013^\d{5}$
ШвецияSENNN NN111 22^\d{3} ?\d{2}$

Ключевые европейские страны вне ЕС

СтранаISOФорматПримерRegex
ВеликобританияGBиерархическийSW1A 1AA^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$
ШвейцарияCH4 цифры8001^\d{4}$
НорвегияNO4 цифры0150^\d{4}$
ИсландияIS3 цифры101^\d{3}$
ЛихтенштейнLI4 цифры9490^\d{4}$

Британский почтовый индекс в деталях

В британский код заложено больше уровней иерархии, чем в большинство европейских систем. Код вида SW1A 1AA раскладывается так:

  • SW: почтовая зона (юго-западный Лондон)
  • SW1A: почтовый район (Уайтхолл, Вестминстер и St James's)
  • SW1A 1: почтовый сектор (несколько улиц)
  • SW1A 1AA: почтовая единица (конкретная точка доставки, часто одно здание)

Благодаря этой иерархии британский индекс может указывать на конкретное здание. Поэтому британские продукты часто группируют данные по индексу, как по кварталу или даже по улице. Ирландский Eircode идёт ещё дальше: у каждого отдельного адреса там свой код.

Как проверять индексы в рабочей системе

Самый дешёвый способ: таблица регулярных выражений по странам, как выше, которую вы применяете по коду страны из адреса. Код страны можно взять:

  • из выпадающего списка, где пользователь выбрал страну
  • из геолокации пользователя по IP
  • из ответа геокодера (большинство геокодеров нормализуют индекс и возвращают код страны)

Не проверяйте почтовый индекс, если не знаете страну. Четырёхзначный код допустим в десятках стран и недопустим в ещё большем числе.

Там, где ошибка дорого стоит (оформление заказа, KYC, регулируемые отрасли), одного регулярного выражения мало. Отправьте адрес в геокодер и считайте проверкой ответ с точностью до здания («rooftop») или до улицы («street»), а не совпадение с шаблоном. Индекс в правильном формате всё равно может не соответствовать реальному адресу.

Хранение и нормализация

Храните почтовые индексы как строки, а не как числа. Ведущие нули важны: 01100 это правильный литовский код, а 1100 нет. Правила хранения:

  • При сравнении данных из разных наборов удаляйте все символы, кроме букв и цифр.
  • При выводе показывайте индекс в каноническом формате страны (с дефисами, пробелами, префиксами).
  • Всегда храните код страны рядом с индексом, даже если сегодня ваш продукт работает только в одной стране. Тогда при выходе в другие страны схему не придётся переделывать.

Как помогает MapAtlas

Geocoding API MapAtlas возвращает нормализованное поле address_components.postal_code для каждой поддерживаемой страны, проверенное по исходным данным. Search API принимает почтовый индекс как поисковый запрос и возвращает соответствующее место. Оба API размещены в ЕС, соответствуют GDPR и работают на данных уровня OSM с отдельными парсерами адресов для каждой страны.

Как адреса превращаются в координаты, мы разбираем в статье Что такое геокод. Как устроены широта и долгота в каждом ответе с координатами, читайте в статье Широта и долгота.

Часто задаваемые вопросы

Какой формат у европейских почтовых индексов?

Единого европейского формата почтового индекса нет. Каждая страна задаёт свой. Чаще всего это цифровой код фиксированной длины (5 цифр в Германии, Франции, Италии, Испании; 4 цифры в Бельгии, Венгрии, Австрии, Швейцарии), но в нескольких странах индексы буквенно-цифровые: в Нидерландах 4 цифры и 2 буквы, в Великобритании сложная система из двух частей, в Ирландии Eircode из 7 символов. Рабочему валидатору адресов нужен свой шаблон для каждой из 27 стран ЕС и для ключевых европейских стран вне ЕС.

Немецкий почтовый индекс (Postleitzahl) устроен так же, как польский?

Оба состоят из пяти цифр, но устроены по-разному. В Германии это 5 цифр подряд (например, 10115). В Польше 2 цифры, дефис и ещё 3 цифры (например, 00-001). Храните каноническую форму: для Польши с дефисом, для Германии без него. Чтобы сравнивать индексы из разных наборов данных, удаляйте все символы, кроме букв и цифр, а при выводе снова применяйте формат нужной страны.

Как проверить почтовый индекс любой страны ЕС?

Сначала определите страну (по адресу, по коду страны ISO 3166-1 alpha-2 или по геолокации пользователя). Затем примените регулярное выражение для этой страны. Проверка с учётом страны это стандартный подход в рабочих системах: одно общее регулярное выражение либо отклоняет правильные индексы, либо пропускает явно неверные. MapAtlas Geocoding API возвращает нормализованный индекс для каждой страны в `address_components`, поэтому обычно проверку можно доверить геокодеру.

Почему британские почтовые индексы так не похожи на остальные?

Британские индексы построены по иерархической буквенно-цифровой системе: в двух частях кода записаны почтовая зона, район, сектор и конечная единица (например, SW1A 1AA у Букингемского дворца). В одном коде заложено больше пространственной информации, чем в большинстве других систем, поэтому британский индекс иногда используют как замену названию района или даже отдельной улицы. Систему придумали в 1950-1960-е годы, и с тех пор её встраивают в современную инфраструктуру данных.

Оказалось полезным? Поделитесь.

Об авторе

Brent van der Heiden

Автор

Brent van der Heiden

Co-Founder & CEO at MapAtlas

Brent built MapAtlas out of a conviction that developers deserve location APIs with fair pricing and genuine end-user privacy. Before that he co-founded MapMetrics, a community mapping and navigation app. He writes about geospatial infrastructure, map data, AI search visibility, and how location data powers the products people rely on every day.

Все статьи →
Вернуться в блог