Skip to main content
Định Dạng Mã Bưu Chính EU: Tài Liệu Tham Khảo Từng Quốc Gia cho
Guides

Định Dạng Mã Bưu Chính EU: Tài Liệu Tham Khảo Từng Quốc Gia cho

Mã bưu chính châu Âu rất đa dạng về độ dài, định dạng và ý nghĩa. Hướng dẫn này là tài liệu tham khảo từng quốc gia cho 27 thành viên EU cộng UK, Thụy Sĩ và Na Uy

Brent van der Heiden7 min read
#mã bưu chính#mã bưu chính châu âu#address validation#geocoding#eu data#regex

Mọi developer đã xây dựng form địa chỉ cho khách hàng châu Âu cuối cùng đều khám phá ra sự thật: không có định dạng mã bưu chính châu Âu thống nhất. Mỗi quốc gia có định dạng riêng, và các biến thể thực sự có ý nghĩa. Trang này là tài liệu tham khảo từng quốc gia bao gồm EU-27 cộng các quốc gia châu Âu ngoài EU quan trọng, với các regex pattern và mẹo validation bạn cần trong production.

Pattern Tổng Quan

Mã bưu chính châu Âu chia thành khoảng bốn nhóm:

  1. 5 chữ số: Đức, Pháp, Ý, Tây Ban Nha, Phần Lan, Croatia, Estonia, Hy Lạp, Lithuania, Slovakia.
  2. 4 chữ số: Bỉ, Bulgaria, Hungary, Áo, Thụy Sĩ, Liechtenstein, Luxembourg, Na Uy, Slovenia, Đan Mạch.
  3. Chữ-số, định dạng cố định: Hà Lan (4 chữ số cộng 2 chữ cái), Ireland (Eircode, 7 ký tự chữ-số), Malta (3 chữ cái cộng 4 chữ số).
  4. Chữ-số phân cấp: Vương quốc Anh (độ dài thay đổi, hai phần).

Cộng thêm một số trường hợp ngoại lệ: Thụy Điển dùng 5 chữ số với khoảng trắng sau chữ số thứ ba (123 45), Ba Lan dùng 5 chữ số với dấu gạch ngang sau chữ số thứ hai (00-001), Czechia dùng 5 chữ số với khoảng trắng sau chữ số thứ ba (110 00).

Tài Liệu Tham Khảo EU-27

Quốc giaISOĐịnh dạngVí dụRegex
ÁoAT4 chữ số1010^\d{4}$
BỉBE4 chữ số1000^\d{4}$
BulgariaBG4 chữ số1000^\d{4}$
CroatiaHR5 chữ số10000^\d{5}$
SípCY4 chữ số1010^\d{4}$
CzechiaCZNNN NN110 00^\d{3} ?\d{2}$
Đan MạchDK4 chữ số1050^\d{4}$
EstoniaEE5 chữ số10111^\d{5}$
Phần LanFI5 chữ số00100^\d{5}$
PhápFR5 chữ số75008^\d{5}$
ĐứcDE5 chữ số10115^\d{5}$
Hy LạpGRNNN NN105 63^\d{3} ?\d{2}$
HungaryHU4 chữ số1051^\d{4}$
IrelandIEEircodeD02 X285^[A-Z]\d{2} ?[A-Z0-9]{4}$
ÝIT5 chữ số00184^\d{5}$
LatviaLVLV-NNNNLV-1050^LV-\d{4}$
LithuaniaLTLT-NNNNNLT-01100^LT-\d{5}$
LuxembourgLU4 chữ số1234^\d{4}$
MaltaMTLLL NNNNVLT 1234^[A-Z]{3} ?\d{4}$
Hà LanNLNNNN LL1011 AB^\d{4} ?[A-Z]{2}$
Ba LanPLNN-NNN00-001^\d{2}-\d{3}$
Bồ Đào NhaPTNNNN-NNN1000-001^\d{4}-\d{3}$
RomaniaRO6 chữ số010001^\d{6}$
SlovakiaSKNNN NN811 01^\d{3} ?\d{2}$
SloveniaSI4 chữ số1000^\d{4}$
Tây Ban NhaES5 chữ số28013^\d{5}$
Thụy ĐiểnSENNN NN111 22^\d{3} ?\d{2}$

Các Quốc Gia Châu Âu Ngoài EU Quan Trọng

Quốc giaISOĐịnh dạngVí dụRegex
Vương quốc AnhGBphân cấpSW1A 1AA^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$
Thụy SĩCH4 chữ số8001^\d{4}$
Na UyNO4 chữ số0150^\d{4}$
IcelandIS3 chữ số101^\d{3}$
LiechtensteinLI4 chữ số9490^\d{4}$

Mã Bưu Chính UK Chi Tiết

Hệ thống UK là hệ thống chứa nhiều thông tin nhất ở châu Âu. Mã như SW1A 1AA phân tách thành:

  • SW: khu bưu chính (London South West)
  • SW1A: quận bưu chính (St James's và Pimlico)
  • SW1A 1: khu vực bưu chính (một vài con phố)
  • SW1A 1AA: đơn vị bưu chính (điểm giao hàng cụ thể, thường là một tòa nhà)

Sự phân cấp này có nghĩa là mã bưu chính UK có thể xác định một tòa nhà, đó là lý do tại sao các sản phẩm UK thường dùng mã bưu chính như proxy cho nhóm cấp khu phố hoặc thậm chí cấp đường phố. Hầu như không có hệ thống mã bưu chính nào của quốc gia khác làm được điều này.

Các Pattern Validation Trong Production

Cách tiếp cận production rẻ nhất là bảng regex theo từng quốc gia như trên, được áp dụng dựa trên mã quốc gia từ địa chỉ. Mã quốc gia có thể đến từ:

  • Dropdown rõ ràng mà người dùng đã chọn
  • IP geolocation của người dùng
  • Kết quả geocoder (hầu hết geocoder production chuẩn hóa mã bưu chính và bao gồm mã quốc gia trong response)

Tránh cố gắng validate mã bưu chính mà không biết quốc gia. Mã 4 chữ số hợp lệ ở 12 quốc gia và không hợp lệ ở nhiều quốc gia khác.

Với các flow quan trọng (checkout, KYC, các ngành được quản lý), đừng dừng lại ở regex. Gửi địa chỉ đến geocoder và xem response với độ chính xác "rooftop" hoặc "street" như là validation, không chỉ dựa vào kết quả khớp regex. Mã bưu chính được định dạng đúng vẫn có thể không khớp với địa chỉ thực.

Lưu Trữ và Chuẩn Hóa

Lưu mã bưu chính dưới dạng string, không phải số. Số 0 đứng đầu quan trọng (01100 là mã Lithuania hợp lệ; 1100 thì không). Các quy ước định dạng lưu trữ:

  • Bỏ các ký tự không phải chữ-số khi so sánh giữa các tập dữ liệu.
  • Hiển thị theo dạng chuẩn của từng quốc gia (với dấu gạch ngang, khoảng trắng, prefix) khi output.
  • Luôn lưu mã quốc gia cùng với mã bưu chính, ngay cả khi sản phẩm của bạn hiện chỉ hoạt động ở một quốc gia. Schema sẽ mở rộng ra đa quốc gia mà không cần migration.

MapAtlas Giúp Như Thế Nào

MapAtlas Geocoding API trả về field address_components.postal_code đã được chuẩn hóa cho mọi quốc gia được hỗ trợ, được validate với dữ liệu nguồn. Search API chấp nhận mã bưu chính như input tìm kiếm và trả về địa điểm khớp. Cả hai API đều được host tại EU, tuân thủ GDPR, và xây dựng trên dữ liệu chuẩn OSM với các parser địa chỉ theo từng quốc gia rõ ràng.

Để tìm hiểu sâu hơn về cách địa chỉ trở thành tọa độ, xem Geocode là gì. Để hiểu cơ học kinh độ và vĩ độ đứng sau mọi response tọa độ, xem Kinh độ và Vĩ độ.

Câu hỏi thường gặp

Định dạng mã bưu chính châu Âu như thế nào?

Không có định dạng mã bưu chính châu Âu thống nhất. Mỗi quốc gia định nghĩa định dạng riêng. Hầu hết dùng mã số có độ dài cố định (5 chữ số ở Đức, Pháp, Ý, Tây Ban Nha; 4 chữ số ở Bỉ, Hungary, Áo, Thụy Sĩ), nhưng một số dùng mã chữ-số (Hà Lan dùng 4 chữ số cộng 2 chữ cái, Vương quốc Anh dùng hệ thống chữ-số hai phần phức tạp, Ireland dùng Eircode với 7 ký tự chữ-số). Một address validator hoạt động phải chứa pattern theo từng quốc gia cho EU-27 cộng các quốc gia châu Âu ngoài EU quan trọng.

Mã bưu chính Đức (Postleitzahl) có giống mã bưu chính Ba Lan không?

Cả hai đều có năm ký tự nhưng cấu trúc khác nhau. Đức dùng 5 chữ số liên tiếp (ví dụ 10115). Ba Lan dùng 2 chữ số, dấu gạch ngang, rồi 3 chữ số (ví dụ 00-001). Để lưu trữ, bạn có thể giữ dạng chuẩn có dấu gạch ngang cho Ba Lan và không có cho Đức. Để khớp giữa các tập dữ liệu, chuẩn hóa bằng cách bỏ các ký tự không phải chữ-số và áp dụng lại định dạng theo từng quốc gia khi hiển thị.

Làm thế nào để validate mã bưu chính từ bất kỳ quốc gia EU nào?

Đầu tiên xác định quốc gia (từ địa chỉ, mã quốc gia ISO 3166-1 alpha-2, hoặc geolocation của người dùng). Sau đó áp dụng regex pattern của quốc gia đó. Validation theo từng quốc gia là pattern production tiêu chuẩn, vì một regex toàn cầu duy nhất sẽ hoặc là từ chối các mã hợp lệ hoặc chấp nhận các mã rõ ràng là không hợp lệ. MapAtlas Geocoding API trả về mã bưu chính đã chuẩn hóa theo từng quốc gia trong `address_components`, vì vậy thường bạn để geocoder làm bước validation cho bạn.

Tại sao hệ thống mã bưu chính Vương quốc Anh trông khác biệt như vậy?

Mã bưu chính UK dùng hệ thống chữ-số phân cấp mã hóa khu bưu chính, quận, khu vực và đơn vị trong hai phần (ví dụ SW1A 1AA cho Điện Buckingham). Nó chứa nhiều thông tin không gian hơn trên mỗi mã so với hầu hết hệ thống của các quốc gia, đó là lý do tại sao mã bưu chính UK đôi khi được dùng như proxy cho khu phố hoặc thậm chí từng con phố. Hệ thống được thiết kế vào những năm 1950 và 1960 và đã được điều chỉnh vào hạ tầng dữ liệu hiện đại kể từ đó.

Thấy hữu ích? Chia sẻ nhé.

Về tác giả

Brent van der Heiden

Viết bởi

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. He writes about geospatial infrastructure, AI search visibility, and how location data powers the products people rely on every day.

Xem tất cả bài viết
Quay lại blog