Testing & QA · 6 Min. Lesezeit

Postleitzahlenformat nach Land: Regex-Referenz 2026

Postleitzahlenformate für 38 Länder mit funktionierenden Regexes: numerische und alphanumerische Systeme, Länder ohne Postleitzahlen, Normalisierungsregeln und ein Testkorpus.

Von Charlie Simmon ·

Postleitzahlenformate sind nicht austauschbar, und ein Validator, der fünf Ziffern annimmt, weist den Großteil der Welt zurück. Die Unterschiede sind struktureller, nicht kosmetischer Natur: Manche Systeme sind numerisch mit führenden Nullen, manche mischen Buchstaben und Ziffern, manche stellen den Code vor die Stadt, und zwei Länder im Fixture-Set dieser Seite haben überhaupt keine Postleitzahlen.

Diese Referenz sammelt die Muster, die für Entwickler beim Bau eines Adressformulars relevant sind, mit Regexes, die Sie direkt testen können. Sie zieht außerdem dieselbe Grenze wie die Seite selbst: Die Postleitzahlenvalidierung hier ist eine Strukturprüfung für jedes Land plus eine Existenzprüfung für US-ZIPs gegen einen Datensatz mit 40.979 Zeilen. Nichts in diesem Leitfaden impliziert, dass ein passender Code vergeben oder zustellbar ist.

Warum Postleitzahlen kein numerisches Feld sind

Die Vereinigten Staaten verwenden fünf Ziffern oder ZIP+4, was Entwickler dazu verleitet, Postleitzahlen als Integer zu modellieren. Dieses Modell bricht sofort in Kanada, dem Vereinigten Königreich, den Niederlanden, Irland, Malta und Argentinien, wo Buchstaben Teil des Codes sind. Es bricht auch still in Deutschland, Frankreich, Spanien, Italien und Polen, wo führende Nullen bedeutsam sind und eine Integer-Spalte sie verwirft.

Eine zweite Fehlerklasse entsteht aus der Position. Die meisten westlichen Länder setzen die Postleitzahl nach die Stadt, aber Deutschland, Frankreich, die Niederlande und Japan setzen sie davor, und Japan stellt den gesamten Code an den Anfang der Adresse. Wenn Ihr Formular eine feste Vorlage rendert, erzeugt es Adressen, die ein lokaler Leser offensichtlich falsch findet, obwohl jedes Feld ausgefüllt ist.

  • Postleitzahlen immer als Text speichern, niemals als Integer
  • Führende Nullen durch jede Schicht erhalten, einschließlich CSV-Export
  • Buchstaben zulassen, außer das Land ist strikt numerisch
  • Nicht annehmen, dass die Postleitzahl nach der Stadt kommt
  • Das Trennzeichen als Darstellung behandeln, nicht als Struktur

Numerische Systeme und ihre Bereiche

Der Großteil Europas verwendet numerische Codes fester Länge. Deutschland, Frankreich, Spanien, Italien, Griechenland, die Türkei und Saudi-Arabien verwenden fünf Ziffern; Österreich, Belgien, die Schweiz, Dänemark, Norwegen, Ungarn und Südafrika vier; Polen und Portugal fügen einen Bindestrich hinzu; Schweden verwendet drei Ziffern, ein Leerzeichen und zwei. Tschechien ist fünfstellig, üblicherweise mit einem Leerzeichen nach der dritten Ziffer.

Asien und Lateinamerika sind meist numerisch, aber mit unterschiedlichen Längen. Indien, China, Russland, Singapur und Nigeria verwenden sechs Ziffern; Japan sieben mit einem konventionellen Bindestrich nach der dritten; Südkorea fünf; Brasilien acht mit einem Bindestrich nach der fünften; Chile sieben; Kolumbien sechs; Peru und Mexiko fünf. Die Länge allein reicht nicht aus, um ein Land zu identifizieren, weshalb ein Validator das Länderfeld benötigt, bevor er irgendetwas validiert.

LandLängeKanonische FormRegex
Deutschland5 Ziffern10115^\d{5}$
Frankreich5 Ziffern75008^\d{5}$
Spanien5 Ziffern28013^\d{5}$
Österreich4 Ziffern1010^\d{4}$
Polen5 Ziffern mit Bindestrich00-001^\d{2}-\d{3}$
Portugal7 Ziffern mit Bindestrich1250-096^\d{4}-\d{3}$
Schweden5 Ziffern mit Leerzeichen114 55^\d{3}\s\d{2}$
Japan7 Ziffern mit Bindestrich100-0001^\d{3}-\d{4}$
Brasilien8 Ziffern mit Bindestrich01310-100^\d{5}-\d{3}$
Indien6 Ziffern110001^\d{6}$
Südkorea5 Ziffern04524^\d{5}$
Mexiko5 Ziffern06600^\d{5}$

Alphanumerische Systeme und ihre Zeichenregeln

Kanada verwendet das Muster A1A 1A1, und die Buchstaben sind eingeschränkt. Das erste Zeichen darf nicht D, F, I, O, Q, U, W oder Z sein, und die übrigen Buchstaben dürfen nicht D, F, I, O, Q oder U sein. Das Leerzeichen zwischen den beiden Dreiergruppen ist konventionell. Ein Validator, der jeden Buchstaben zulässt, akzeptiert Codes, die Canada Post nie vergibt.

Das Vereinigte Königreich verwendet einen Outward-Code aus zwei bis vier Zeichen, gefolgt von einem einzelnen Leerzeichen und einem dreizeichigen Inward-Code, wie in SW1A 1AA. Die Niederlande sind vier Ziffern, ein Leerzeichen und zwei Großbuchstaben. Irland verwendet einen siebenstelligen Eircode, aufgeteilt in einen dreizeichigen Routing Key und eine vierstellige eindeutige Kennung. Malta ist drei Buchstaben, ein Leerzeichen und vier Ziffern. Argentinien verwendet den achtstelligen CPA, einen Buchstaben gefolgt von vier Ziffern und drei Buchstaben, zum Beispiel C1425ABC.

LandMusterBeispielRegex
KanadaA1A 1A1 mit eingeschränkten BuchstabenK1A 0B1^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] ?\d[ABCEGHJKLMNPRSTVWXYZ]\d$
Vereinigtes Königreich2-4 Zeichen Outward, 3 Zeichen InwardSW1A 1AA^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$
Niederlande4 Ziffern, 2 Buchstaben1012 AB^\d{4} ?[A-Z]{2}$
Irland3 Zeichen Routing Key, 4 Zeichen KennungD02 X285^(?:[A-Z]\d{2}|D6W) ?[A-Z0-9]{4}$
Malta3 Buchstaben, 4 ZiffernVLT 1117^[A-Z]{3} ?\d{4}$
ArgentinienBuchstabe, 4 Ziffern, 3 BuchstabenC1425ABC^[A-Z]\d{4}[A-Z]{3}$

Länder ohne Postleitzahl

Hongkong und die Vereinigten Arabischen Emirate haben kein Postleitzahlensystem. Beide sind im 38-Länder-Fixture-Set dieser Seite, und der Generator gibt für sie einen leeren Postleitzahlwert zurück, statt Ziffern zu erfinden. Das ist das korrekte Verhalten und zugleich ein nützlicher Testfall, denn ein Formular, das die Postleitzahl als Pflichtfeld markiert, ist für beide Märkte fehlerhaft.

Die VAE-Konvention ist eine P.O.-Box-Nummer, die keine Postleitzahl ist und nicht in dieses Feld gezwungen werden sollte. Hongkonger Adressen verwenden Bezirk und Straße, und Post wird ohne jeglichen Code zugestellt. Wenn Ihr Datenmodell einen nicht-nullbaren Postleitzahlwert erfordert, verwenden Sie einen expliziten Sentinel wie ein Länder-Flag, keinen Fake-Code, denn ein Fake-Code besteht die Validierung und scheitert dann an jeder nachgelagerten Prüfung, die einen echten Code annimmt.

  • Hongkong: keine Postleitzahl, Bezirk plus Straße ist die Adresse
  • Vereinigte Arabische Emirate: keine Postleitzahl, P.O. Box ist die gängige Konvention
  • Das Postleitzahlfeld optional machen, wenn eines der beiden Länder ausgewählt ist
  • Niemals 00000 oder N/A in eine Postleitzahlspalte einsetzen
  • Die Abwesenheit explizit erfassen, damit Exporte nicht wie fehlende Daten aussehen

Strukturprüfungen versus Existenzprüfungen

Eine Strukturprüfung beantwortet, ob eine Zeichenkette dem Ländermuster entspricht. Eine Existenzprüfung beantwortet, ob der Code in einem Referenzdatensatz vorkommt. Nur die zweite kann Ihnen sagen, dass ein Code nie vergeben wurde. Diese Seite führt die Strukturprüfung für alle 38 Länder und eine Existenzprüfung für US-ZIPs gegen 40.979 Zeilen durch und kennzeichnet sie unterschiedlich, damit niemand das eine mit dem anderen verwechselt.

Keine der beiden Prüfungen beweist Zustellbarkeit. Eine fünfstellige US-ZIP kann existieren, während die Straßenadresse darunter nicht existiert, und ein strukturell gültiger deutscher Code kann zu einer anderen Stadt gehören als der angegebenen. Wenn Sie dieses Maß an Sicherheit benötigen, brauchen Sie einen Postleitzahlen-Referenzdatensatz und eine straßenebene Datenbank, was ein anderes Produkt als ein Formatprüfer ist.

PrüftypUmfasstBeweistBeweist nicht
MusterabgleichAlle 38 LänderWohlgeformt für dieses LandDass der Code vergeben ist
US-ZIP-Existenz40.979 US-ZIP-ZeilenDer Code ist im DatensatzÜbereinstimmung von Stadt oder Straße
PflichtfeldregelFormularebeneÜbermittlung kann fortgesetzt werdenJegliche reale Gültigkeit
Länge und ZeichensatzFeldebeneSpeicherung läuft nicht überLänderkorrektheit

Regex-Details, die Produktionsfehler verursachen

Verankern Sie jedes Muster. Ein nicht verankertes /\d{5}/ findet die fünf Ziffern innerhalb einer neunstelligen Zeichenkette und meldet Erfolg. Verwenden Sie ^ und $ oder die entsprechende Full-Match-API. In JavaScript findet \d nur ASCII-Ziffern; in Python findet \d standardmäßig Unicode-Ziffern, sodass ein Muster östliche arabische Ziffern akzeptieren kann, es sei denn, Sie kompilieren mit re.ASCII oder schreiben [0-9].

Entscheiden Sie explizit, ob das Trennzeichen erforderlich ist. Für die Anzeige fügen Sie das kanonische Trennzeichen selbst ein. Für die Eingabe akzeptieren Sie null oder ein Leerzeichen oder Bindestrich und normalisieren. Seien Sie vorsichtig mit Bindestrichen in Zeichenklassen, wo sie Bereiche definieren, es sei denn, sie werden maskiert oder an letzter Stelle platziert. Und verwenden Sie kein Case-Insensitive-Flag, um einen Normalisierungsfehler zu überdecken: Schreiben Sie den Wert beim Speichern in Großbuchstaben und halten Sie die Anzeigeform kanonisch.

  • Mit ^ und $ verankern oder eine Full-Match-Funktion verwenden
  • [0-9] verwenden, wenn ASCII-Ziffern gemeint sind
  • Optionale Trennzeichen bei der Eingabe akzeptieren, kanonische Trennzeichen bei der Anzeige ausgeben
  • Bindestriche maskieren oder in Zeichenklassen an letzter Stelle platzieren
  • Vor dem Abgleich in Großbuchstaben umwandeln, statt Case-Flags zu verstreuen
  • Geschützte Leerzeichen und Zero-Width-Zeichen explizit ablehnen

Beim Schreiben normalisieren, bei der Anzeige formatieren

Speichern Sie eine kanonische Form und leiten Sie die Anzeigeform ab. Die kanonische Form ist üblicherweise Großbuchstaben mit dem Standardtrennzeichen oder nur Ziffern, wenn das Trennzeichen rein konventionell ist. Behalten Sie die rohe Benutzereingabe in einer separaten Spalte, wenn Sie einen Audit-Trail benötigen, denn Normalisierung ist verlustbehaftet und ein Support-Mitarbeiter muss möglicherweise genau sehen, was eingegeben wurde.

Die länderspezifische Normalisierung ist klein, aber real. Kanada will Großbuchstabe-Ziffer-Großbuchstabe, Leerzeichen, Ziffer-Großbuchstabe-Ziffer. Die Niederlande wollen Großbuchstaben nach den Ziffern. Das Vereinigte Königreich will ein einzelnes Leerzeichen und Großbuchstaben. Brasilien und Japan verwenden einen Bindestrich, den Benutzer häufig weglassen, also in die Form mit Bindestrich normalisieren. Deutschland will überhaupt kein Trennzeichen und muss die führende Null behalten.

LandRohe EingabeGespeicherte kanonische FormAnzeige
Kanadak1a0b1K1A 0B1K1A 0B1
Niederlande1012ab1012 AB1012 AB
Vereinigtes Königreichsw1a1aaSW1A 1AASW1A 1AA
Brasilien0131010001310-10001310-100
Japan1000001100-0001100-0001
Deutschland101151011510115
Schweden11455114 55114 55

Ein Testkorpus zum Kopieren

Jeder Validator braucht einen Korpus mit mindestens einem gültigen und einem ungültigen Fall pro Land sowie Fällen, die speziell Normalisierung und Speicherung testen. Die folgende Tabelle ist ein Ausgangssatz. Beachten Sie, dass mehrere ungültige Fälle aus länderspezifischen Gründen ungültig sind und nicht aus generischen, was der Punkt ist, an dem die meisten handgeschriebenen Tests zu früh aufhören.

Fügen Sie Fälle für die Länder ohne Postleitzahl, für führende Nullen und für die Trennzeichenvarianten hinzu, die Benutzer tatsächlich eingeben. Wenn der Validator zwischen Client und Server geteilt wird, führen Sie denselben Korpus gegen beide Implementierungen aus; eine Abweichung zwischen einem permissiven Client und einem strikten Server ist die häufigste Quelle von Meldungen wie „Das Formular hat es akzeptiert, aber die API hat es abgelehnt“.

FallWertLandErwartet
Gültige ZIP+497205-2515Vereinigte StaatenAkzeptieren
Ungültige ZIP+497205-251Vereinigte StaatenAblehnen
Gültig kanadischK1A 0B1KanadaAkzeptieren
Ungültiger kanadischer BuchstabeD1A 0B1KanadaAblehnen
Gültig UKSW1A 1AAVereinigtes KönigreichAkzeptieren
Fehlender UK-Inward-CodeSW1AVereinigtes KönigreichAblehnen
Deutsche führende Null01067DeutschlandAkzeptieren und erhalten
Buchstaben in einem numerischen System1011ADeutschlandAblehnen
Kein CodeHongkongAls leer akzeptieren
Erfundener Code99999Vereinigte Arabische EmirateFeld ablehnen

Fragen

Welche Länder haben keine Postleitzahlen?+
Hongkong und die Vereinigten Arabischen Emirate haben keine, und beide sind im 38-Länder-Fixture-Set dieser Seite. Der Generator gibt für sie ein leeres Postleitzahlfeld zurück, statt einen Wert zu erfinden.
Bedeutet eine gültige Postleitzahl, dass die Adresse real ist?+
Nein. Ein struktureller Treffer bedeutet nur, dass der Wert wohlgeformt ist. Nur US-ZIPs erhalten hier eine Existenzprüfung gegen 40.979 Zeilen, und kein Land erhält eine Zustellbarkeitsaussage.
Sollten Postleitzahlen als Integer gespeichert werden?+
Niemals. Kanada, das Vereinigte Königreich, die Niederlande, Irland, Malta und Argentinien verwenden Buchstaben, und Deutschland, Frankreich, Spanien, Italien und Polen haben bedeutsame führende Nullen.
Warum setzen die Niederlande Buchstaben nach die Ziffern?+
Der niederländische Code besteht aus vier Ziffern gefolgt von zwei Großbuchstaben, zum Beispiel 1012 AB. Die Buchstaben sind Teil des Codes, kein Regionssuffix, und eine reine Ziffern-Regex weist gültige Adressen zurück.
Wie sollte ich das Leerzeichen in einem UK- oder kanadischen Code behandeln?+
Eingaben mit null oder einem Leerzeichen akzeptieren, in Großbuchstaben umwandeln und ein einzelnes kanonisches Trennzeichen speichern. Für die Anzeige die kanonische Form ausgeben, statt wiederzugeben, was der Benutzer eingegeben hat.

Beispiele sind synthetisch. Verwenden Sie eine generierte Adresse nicht für Identitätsprüfungen, Kontoregistrierungen oder Lieferungen.

Referenzstandards

Als Nächstes lesen

Alle Ratgeber