Setiap developer yang pernah membangun formulir alamat untuk pelanggan Eropa pada akhirnya akan menyadari kebenarannya: tidak ada format kode pos Eropa yang universal. Setiap negara memiliki formatnya sendiri, dan variasinya sangat berarti. Halaman ini adalah referensi per negara yang mencakup EU-27 plus negara-negara Eropa non-EU utama, dengan pola regex dan tips validasi yang kamu butuhkan di production.
Pola Tingkat Tinggi
Kode pos Eropa terbagi dalam sekitar empat kelompok:
- Numerik 5 digit: Jerman, Prancis, Italia, Spanyol, Finlandia, Kroasia, Estonia, Yunani, Lituania, Slovakia.
- Numerik 4 digit: Belgia, Bulgaria, Hungaria, Austria, Swiss, Liechtenstein, Luksemburg, Norwegia, Slovenia, Denmark.
- Alfanumerik, format tetap: Belanda (4 digit plus 2 huruf), Irlandia (Eircode, 7 alfanumerik), Malta (3 huruf plus 4 digit).
- Alfanumerik hierarkis: Inggris (panjang variabel, dua bagian).
Ditambah beberapa outlier: Swedia menggunakan 5 digit dengan spasi setelah yang ketiga (123 45), Polandia menggunakan 5 digit dengan tanda hubung setelah yang kedua (00-001), Ceko menggunakan 5 digit dengan spasi setelah yang ketiga (110 00).
Referensi EU-27
| Negara | ISO | Format | Contoh | Regex |
|---|---|---|---|---|
| Austria | AT | 4 digit | 1010 | ^\d{4}$ |
| Belgia | BE | 4 digit | 1000 | ^\d{4}$ |
| Bulgaria | BG | 4 digit | 1000 | ^\d{4}$ |
| Kroasia | HR | 5 digit | 10000 | ^\d{5}$ |
| Siprus | CY | 4 digit | 1010 | ^\d{4}$ |
| Ceko | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
| Denmark | DK | 4 digit | 1050 | ^\d{4}$ |
| Estonia | EE | 5 digit | 10111 | ^\d{5}$ |
| Finlandia | FI | 5 digit | 00100 | ^\d{5}$ |
| Prancis | FR | 5 digit | 75008 | ^\d{5}$ |
| Jerman | DE | 5 digit | 10115 | ^\d{5}$ |
| Yunani | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Hungaria | HU | 4 digit | 1051 | ^\d{4}$ |
| Irlandia | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Italia | IT | 5 digit | 00184 | ^\d{5}$ |
| Latvia | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Lituania | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Luksemburg | LU | 4 digit | 1234 | ^\d{4}$ |
| Malta | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Belanda | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Polandia | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Portugal | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Rumania | RO | 6 digit | 010001 | ^\d{6}$ |
| Slovakia | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Slovenia | SI | 4 digit | 1000 | ^\d{4}$ |
| Spanyol | ES | 5 digit | 28013 | ^\d{5}$ |
| Swedia | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
Negara Eropa Non-EU Utama
| Negara | ISO | Format | Contoh | Regex |
|---|---|---|---|---|
| Inggris | GB | hierarkis | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Swiss | CH | 4 digit | 8001 | ^\d{4}$ |
| Norwegia | NO | 4 digit | 0150 | ^\d{4}$ |
| Islandia | IS | 3 digit | 101 | ^\d{3}$ |
| Liechtenstein | LI | 4 digit | 9490 | ^\d{4}$ |
Kode Pos UK secara Detail
Sistem UK adalah yang paling padat informasi di Eropa. Kode seperti SW1A 1AA terdiri dari:
SW: area pos (London South West)SW1A: distrik pos (St James's dan Pimlico)SW1A 1: sektor pos (beberapa jalan)SW1A 1AA: unit pos (titik pengiriman tertentu, sering satu bangunan)
Hierarki ini berarti kode pos UK dapat mengidentifikasi sebuah bangunan, itulah mengapa produk UK sering menggunakan kode pos sebagai proxy untuk pengelompokan tingkat lingkungan atau bahkan tingkat jalan. Hampir tidak ada sistem kode pos negara lain yang melakukan ini.
Pola Validasi Production
Pendekatan production yang paling murah adalah tabel regex per negara seperti di atas, diterapkan berdasarkan kode negara dari alamat. Kode negara dapat berasal dari:
- Dropdown eksplisit yang dipilih pengguna
- Geolokasi IP pengguna
- Hasil geocoder (sebagian besar geocoder production menormalisasi kode pos dan menyertakan kode negara dalam respons)
Hindari mencoba memvalidasi kode pos tanpa mengetahui negaranya. Kode 4 digit valid di 12 negara dan tidak valid di banyak lainnya.
Untuk alur yang berisiko tinggi (checkout, KYC, industri yang diregulasi), jangan berhenti pada regex. Kirim alamat ke geocoder dan perlakukan respons dengan presisi "rooftop" atau "street" sebagai validasi, bukan hanya kecocokan regex. Kode pos yang diformat dengan benar tetap bisa gagal cocok dengan alamat nyata.
Penyimpanan dan Normalisasi
Simpan kode pos sebagai string, bukan angka. Nol di depan penting (01100 adalah kode Lituania yang valid; 1100 tidak). Konvensi format penyimpanan:
- Hapus karakter non-alfanumerik saat membandingkan lintas dataset.
- Tampilkan dalam bentuk kanonik negara (dengan tanda hubung, spasi, awalan) saat output.
- Selalu simpan kode negara bersama kode pos, meskipun produkmu saat ini hanya beroperasi di satu negara. Skema dapat berkembang ke ekspansi multi-negara tanpa migrasi.
Cara MapAtlas Membantu
Geocoding API MapAtlas mengembalikan field address_components.postal_code yang dinormalisasi untuk setiap negara yang didukung, divalidasi terhadap data sumber. Search API menerima kode pos sebagai input pencarian dan mengembalikan tempat yang cocok. Kedua API dihosting di EU, sesuai GDPR, dan dibangun di atas data berbasis OSM dengan parser alamat khusus per negara.
Untuk pemahaman lebih dalam tentang cara alamat menjadi koordinat, lihat Apa Itu Geocode. Untuk mekanisme longitude dan latitude di balik setiap respons koordinat, lihat Longitude vs Latitude.
Pertanyaan yang Sering Diajukan
Apa format kode pos Eropa?
Tidak ada satu format kode pos Eropa yang universal. Setiap negara mendefinisikannya sendiri. Sebagian besar menggunakan kode numerik dengan panjang tetap (5 digit di Jerman, Prancis, Italia, Spanyol; 4 digit di Belgia, Hungaria, Austria, Swiss), tetapi beberapa menggunakan kode alfanumerik (Belanda menggunakan 4 digit plus 2 huruf, Inggris menggunakan sistem alfanumerik dua bagian yang kompleks, Irlandia menggunakan Eircode dengan 7 karakter alfanumerik). Validator alamat yang berfungsi harus menyimpan pola per negara untuk EU-27 plus negara-negara Eropa non-EU utama.
Apakah kode pos Jerman (Postleitzahl) sama dengan kode pos Polandia?
Keduanya terdiri dari lima karakter tetapi strukturnya berbeda. Jerman menggunakan 5 digit berurutan (misalnya 10115). Polandia menggunakan 2 digit, tanda hubung, lalu 3 digit (misalnya 00-001). Untuk penyimpanan, kamu bisa menyimpan bentuk kanonik dengan tanda hubung untuk Polandia dan tanpa untuk Jerman. Untuk pencocokan lintas dataset, normalkan dengan menghapus karakter non-alfanumerik dan terapkan kembali format khusus negara saat ditampilkan.
Bagaimana cara memvalidasi kode pos dari negara EU mana pun?
Pertama identifikasi negara (dari alamat, kode negara ISO 3166-1 alpha-2, atau geolokasi pengguna). Kemudian terapkan pola regex negara tersebut. Validasi yang mengenal negara adalah pola production standar, karena satu regex global akan menolak kode yang valid atau menerima yang jelas tidak valid. MapAtlas Geocoding API mengembalikan kode pos yang dinormalisasi per negara dalam `address_components`-nya, sehingga kamu biasanya membiarkan geocoder melakukan langkah validasi untukmu.
Mengapa sistem kode pos Inggris terlihat begitu berbeda?
Kode pos UK menggunakan sistem alfanumerik hierarkis yang mengkodekan area pos, distrik, sektor, dan unit dalam dua bagian (misalnya SW1A 1AA untuk Istana Buckingham). Ini membawa lebih banyak informasi spasial per kode daripada sebagian besar sistem negara lainnya, itulah mengapa kode pos UK kadang-kadang digunakan sebagai proxy untuk lingkungan atau bahkan jalan tertentu. Sistem ini dirancang pada tahun 1950an dan 1960an dan telah dipasang ke dalam infrastruktur data modern sejak itu.

