Todo desarrollador que ha construido un formulario de direcciones para clientes europeos acaba descubriendo la verdad: no existe un formato de código postal europeo. Cada país tiene el suyo, y las variaciones son genuinamente significativas. Esta página es una referencia por país que cubre los EU-27 más los principales países europeos fuera de la UE, con los patrones regex y consejos de validación que necesitas en producción.
El patrón general
Los códigos postales europeos se dividen en aproximadamente cuatro grupos:
- 5 dígitos numéricos: Alemania, Francia, Italia, España, Finlandia, Croacia, Estonia, Grecia, Lituania, Eslovaquia.
- 4 dígitos numéricos: Bélgica, Bulgaria, Hungría, Austria, Suiza, Liechtenstein, Luxemburgo, Noruega, Eslovenia, Dinamarca.
- Alfanumérico de formato fijo: Países Bajos (4 dígitos más 2 letras), Irlanda (Eircode, 7 alfanuméricos), Malta (3 letras más 4 dígitos).
- Alfanumérico jerárquico: Reino Unido (longitud variable, dos partes).
Más unos pocos casos particulares: Suecia usa 5 dígitos con un espacio después del tercero (123 45), Polonia usa 5 dígitos con un guión después del segundo (00-001), Chequia usa 5 dígitos con un espacio después del tercero (110 00).
La referencia EU-27
| País | ISO | Formato | Ejemplo | Regex |
|---|---|---|---|---|
| Austria | AT | 4 dígitos | 1010 | ^\d{4}$ |
| Bélgica | BE | 4 dígitos | 1000 | ^\d{4}$ |
| Bulgaria | BG | 4 dígitos | 1000 | ^\d{4}$ |
| Croacia | HR | 5 dígitos | 10000 | ^\d{5}$ |
| Chipre | CY | 4 dígitos | 1010 | ^\d{4}$ |
| Chequia | CZ | NNN NN | 110 00 | ^\d{3} ?\d{2}$ |
| Dinamarca | DK | 4 dígitos | 1050 | ^\d{4}$ |
| Estonia | EE | 5 dígitos | 10111 | ^\d{5}$ |
| Finlandia | FI | 5 dígitos | 00100 | ^\d{5}$ |
| Francia | FR | 5 dígitos | 75008 | ^\d{5}$ |
| Alemania | DE | 5 dígitos | 10115 | ^\d{5}$ |
| Grecia | GR | NNN NN | 105 63 | ^\d{3} ?\d{2}$ |
| Hungría | HU | 4 dígitos | 1051 | ^\d{4}$ |
| Irlanda | IE | Eircode | D02 X285 | ^[A-Z]\d{2} ?[A-Z0-9]{4}$ |
| Italia | IT | 5 dígitos | 00184 | ^\d{5}$ |
| Letonia | LV | LV-NNNN | LV-1050 | ^LV-\d{4}$ |
| Lituania | LT | LT-NNNNN | LT-01100 | ^LT-\d{5}$ |
| Luxemburgo | LU | 4 dígitos | 1234 | ^\d{4}$ |
| Malta | MT | LLL NNNN | VLT 1234 | ^[A-Z]{3} ?\d{4}$ |
| Países Bajos | NL | NNNN LL | 1011 AB | ^\d{4} ?[A-Z]{2}$ |
| Polonia | PL | NN-NNN | 00-001 | ^\d{2}-\d{3}$ |
| Portugal | PT | NNNN-NNN | 1000-001 | ^\d{4}-\d{3}$ |
| Rumanía | RO | 6 dígitos | 010001 | ^\d{6}$ |
| Eslovaquia | SK | NNN NN | 811 01 | ^\d{3} ?\d{2}$ |
| Eslovenia | SI | 4 dígitos | 1000 | ^\d{4}$ |
| España | ES | 5 dígitos | 28013 | ^\d{5}$ |
| Suecia | SE | NNN NN | 111 22 | ^\d{3} ?\d{2}$ |
Principales países europeos fuera de la UE
| País | ISO | Formato | Ejemplo | Regex |
|---|---|---|---|---|
| Reino Unido | GB | jerárquico | SW1A 1AA | ^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$ |
| Suiza | CH | 4 dígitos | 8001 | ^\d{4}$ |
| Noruega | NO | 4 dígitos | 0150 | ^\d{4}$ |
| Islandia | IS | 3 dígitos | 101 | ^\d{3}$ |
| Liechtenstein | LI | 4 dígitos | 9490 | ^\d{4}$ |
El código postal del Reino Unido en detalle
El sistema del Reino Unido es el más rico en información de Europa. Un código como SW1A 1AA se descompone en:
SW: área postal (Londres Sudoeste)SW1A: distrito postal (St James's y Pimlico)SW1A 1: sector postal (unas pocas calles)SW1A 1AA: unidad postal (punto de entrega específico, a menudo un edificio)
Esta jerarquía significa que un postcode del Reino Unido puede identificar un edificio, razón por la que los productos del Reino Unido a menudo usan el código postal como proxy para la agrupación a nivel de barrio o incluso de calle. Casi ningún otro sistema de código postal de otro país hace esto.
Patrones de validación en producción
El enfoque más barato en producción es una tabla de regex por país como la anterior, aplicada en función de un código de país de la dirección. El código de país puede venir de:
- Un selector que el usuario eligió explícitamente
- La geolocalización IP del usuario
- El resultado del geocodificador (la mayoría de los geocodificadores de producción normalizan el código postal e incluyen el código de país en la respuesta)
Evita intentar validar un código postal sin conocer el país. Un código de 4 dígitos es válido en 12 países e inválido en muchos más.
Para flujos de alto riesgo (checkout, KYC, industrias reguladas), no te quedes solo en el regex. Envía la dirección a un geocodificador y trata una respuesta de precisión "rooftop" o "street" como la validación, no solo la coincidencia del regex. Un código postal con el formato correcto puede seguir sin corresponder a una dirección real.
Almacenamiento y normalización
Almacena los códigos postales como strings, no como números. Los ceros iniciales importan (01100 es un código lituano válido; 1100 no lo es). Convenciones de formato para el almacenamiento:
- Elimina los caracteres no alfanuméricos al comparar entre conjuntos de datos.
- Muestra en la forma canónica del país (con guiones, espacios, prefijos) en la salida.
- Almacena siempre el código de país junto al código postal, aunque tu producto solo opere en un país hoy. El esquema escala a la expansión multinacional sin migración.
Cómo ayuda MapAtlas
La API de Geocoding de MapAtlas devuelve un campo address_components.postal_code normalizado para cada país compatible, validado contra los datos fuente. La API de Búsqueda acepta un código postal como input de búsqueda y devuelve el lugar coincidente. Ambas APIs están alojadas en la UE, cumplen con el GDPR y están construidas sobre datos de calidad OSM con parsers de direcciones específicos por país.
Para profundizar en cómo las direcciones se convierten en coordenadas, consulta Qué es un geocode. Para los mecanismos de longitud y latitud detrás de cada respuesta de coordenadas, consulta Longitud vs Latitud.
Preguntas frecuentes
¿Cuál es el formato de los códigos postales europeos?
No existe un único formato de código postal europeo. Cada país define el suyo propio. La mayoría usa un código numérico de longitud fija (5 dígitos en Alemania, Francia, Italia, España; 4 dígitos en Bélgica, Hungría, Austria, Suiza), pero varios usan códigos alfanuméricos (los Países Bajos usan 4 dígitos más 2 letras, el Reino Unido usa un sistema alfanumérico de dos partes complejo, Irlanda usa Eircode con 7 caracteres alfanuméricos). Un validador de direcciones funcional debe tener un patrón por país para los EU-27 más los principales países europeos fuera de la UE.
¿Es igual un código postal alemán (Postleitzahl) que uno polaco?
Ambos tienen cinco caracteres, pero la estructura difiere. Alemania usa 5 dígitos contiguos (por ejemplo, 10115). Polonia usa 2 dígitos, un guión y luego 3 dígitos (por ejemplo, 00-001). Para el almacenamiento, puedes guardar la forma canónica con el guión para Polonia y sin él para Alemania. Para la comparación entre conjuntos de datos, normaliza eliminando los caracteres no alfanuméricos y vuelve a aplicar el formato específico del país en la visualización.
¿Cómo valido un código postal de cualquier país de la UE?
Primero identifica el país (desde la dirección, un código de país ISO 3166-1 alfa-2, o la geolocalización del usuario). Luego aplica el patrón regex de ese país. La validación por país es el patrón estándar de producción, porque un único regex global rechazaría códigos válidos o aceptaría claramente inválidos. La API de Geocoding de MapAtlas devuelve un código postal normalizado por país en sus `address_components`, así que normalmente dejas que el geocodificador realice el paso de validación por ti.
¿Por qué el sistema de códigos postales del Reino Unido parece tan diferente?
Los postcodes del Reino Unido usan un sistema alfanumérico jerárquico que codifica el área postal, el distrito, el sector y la unidad en dos partes (por ejemplo, SW1A 1AA para el Palacio de Buckingham). Lleva más información espacial por código que la mayoría de los sistemas nacionales, razón por la que los postcodes del Reino Unido se usan a veces como proxy de barrio o incluso de calles individuales. El sistema fue diseñado en los años 50 y 60 y ha sido adaptado a la infraestructura de datos moderna desde entonces.

