Каждый разработчик, строивший форму адреса для европейских клиентов, в итоге обнаруживает правду: единого европейского формата почтового индекса не существует. У каждой страны свой, и различия действительно значимы. Эта страница — страновой справочник, охватывающий ЕС-27 плюс ключевые неевропейские страны Европы, с паттернами regex и советами по валидации для продакшна.
Общая схема
Европейские почтовые индексы делятся примерно на четыре группы:
- 5-значные цифровые: Германия, Франция, Италия, Испания, Финляндия, Хорватия, Эстония, Греция, Литва, Словакия.
- 4-значные цифровые: Бельгия, Болгария, Венгрия, Австрия, Швейцария, Лихтенштейн, Люксембург, Норвегия, Словения, Дания.
- Буквенно-цифровые фиксированного формата: Нидерланды (4 цифры плюс 2 буквы), Ирландия (Eircode, 7 буквенно-цифровых символов), Мальта (3 буквы плюс 4 цифры).
- Иерархические буквенно-цифровые: Великобритания (переменной длины, двухчастный).
Плюс несколько исключений: Швеция использует 5 цифр с пробелом после третьей (123 45), Польша — 5 цифр с дефисом после второй (00-001), Чехия — 5 цифр с пробелом после третьей (110 00).
Справочник по ЕС-27
| Страна | ISO | Формат | Пример | Regex |
|---|---|---|---|---|
| Австрия | AT | 4 цифры | 1010 | ^\d{4}$ |
| Бельгия | BE | 4 цифры | 1000 | ^\d{4}$ |
| Болгария | BG | 4 цифры | 1000 | ^\d{4}$ |
| Хорватия | HR | 5 цифр | 10000 | ^\d{5}$ |
| Кипр | CY | 4 цифры | 1010 | ^\d{4}$ |
| Чехия | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
| Дания | DK | 4 цифры | 1050 | ^\d{4}$ |
| Эстония | EE | 5 цифр | 10111 | ^\d{5}$ |
| Финляндия | FI | 5 цифр | 00100 | ^\d{5}$ |
| Франция | FR | 5 цифр | 75008 | ^\d{5}$ |
| Германия | DE | 5 цифр | 10115 | ^\d{5}$ |
| Греция | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Венгрия | HU | 4 цифры | 1051 | ^\d{4}$ |
| Ирландия | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Италия | IT | 5 цифр | 00184 | ^\d{5}$ |
| Латвия | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Литва | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Люксембург | LU | 4 цифры | 1234 | ^\d{4}$ |
| Мальта | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Нидерланды | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Польша | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Португалия | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Румыния | RO | 6 цифр | 010001 | ^\d{6}$ |
| Словакия | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Словения | SI | 4 цифры | 1000 | ^\d{4}$ |
| Испания | ES | 5 цифр | 28013 | ^\d{5}$ |
| Швеция | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
Ключевые страны Европы за пределами ЕС
| Страна | ISO | Формат | Пример | Regex |
|---|---|---|---|---|
| Великобритания | GB | иерархический | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Швейцария | CH | 4 цифры | 8001 | ^\d{4}$ |
| Норвегия | NO | 4 цифры | 0150 | ^\d{4}$ |
| Исландия | IS | 3 цифры | 101 | ^\d{3}$ |
| Лихтенштейн | LI | 4 цифры | 9490 | ^\d{4}$ |
Британский почтовый индекс подробнее
Британская система наиболее информационно насыщена в Европе. Код вида SW1A 1AA раскладывается на:
SW: почтовая зона (юго-западный Лондон)SW1A: почтовый район (St James's и Пимлико)SW1A 1: почтовый сектор (несколько улиц)SW1A 1AA: почтовая единица (конкретная точка доставки, часто одно здание)
Эта иерархия означает, что британский почтовый индекс может идентифицировать конкретное здание — именно поэтому в британских продуктах почтовый индекс нередко используется как прокси для группировки по кварталу или даже улице. Почти ни в одной другой стране это невозможно.
Паттерны продакшн-валидации
Наиболее экономичный продакшн-подход — страноспецифичная таблица regex, подобная приведённой выше, применяемая на основе кода страны из адреса. Код страны может поступать из:
- Явного выпадающего списка, выбранного пользователем
- IP-геолокации пользователя
- Результата геокодера (большинство продакшн-геокодеров нормализуют почтовый индекс и включают код страны в ответ)
Не пытайтесь валидировать почтовый индекс, не зная страну. 4-значный код валиден в 12 странах и невалиден во многих других.
Для ответственных потоков (чекаут, KYC, регулируемые отрасли) не ограничивайтесь regex. Отправьте адрес в геокодер и считайте ответом с точностью «до крыши» или «до улицы» валидацию, а не только совпадение regex. Корректно отформатированный почтовый индекс может всё равно не соответствовать реальному адресу.
Хранение и нормализация
Храните почтовые индексы как строки, а не числа. Ведущие нули важны (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 или геолокации пользователя). Затем примените паттерн regex для этой страны. Страноспецифичная валидация — стандартный продакшн-паттерн, потому что единое глобальное регулярное выражение либо отклоняло бы корректные коды, либо принимало бы явно неверные. MapAtlas Geocoding API возвращает нормализованный почтовый индекс для каждой страны в `address_components`, так что обычно можно просто доверить шаг валидации геокодеру.
Почему система почтовых индексов Великобритании выглядит так не похоже на остальные?
Британские почтовые индексы используют иерархическую буквенно-цифровую систему, кодирующую почтовую зону, район, сектор и единицу в двух частях (например, SW1A 1AA для Букингемского дворца). В каждом коде содержится больше пространственной информации, чем в большинстве других систем, поэтому британские почтовые индексы порой используются как прокси для района или даже отдельных улиц. Система была разработана в 1950-1960-е годы и с тех пор встраивается в современную информационную инфраструктуру.

