[ Input Pattern ]

Formularfelder validieren

Input Pattern Beispiele

 Postleitzahlen

Eine Postleitzahl ist nicht einfach eine Zahl. Es gibt viele Postleitzahlen-Systeme. Schauen wir mal, ob wir dazu ein paar Muster bauen können.
Es gibt häufig 4 und 5-stellige Postleitzahlen. In einigen Ländern sind ein oder zwei Buchstaben vorangestellt, in einigen besteht die Postleitzahl aus mehreren Zahlengruppen und es gibt auch Kombinationen aus Buchstaben und Zahlen.

Internationale Postleitzahlen

4-stellige PLZ (z.B. Australien, Österreich, Belgien, Ungarn [nnnn]
pattern="[0-9]{4}"
5-stellige PLZ (z.B. Ägypten, Deutschland, Italien) [nnnnn]
pattern="\d{5}"
4 und 5-stellige PLZ (z.B. deutschsprachiger Raum [nnnn / nnnnn]
pattern="\d{4,5}"
Andorra Código Postal [AD1nn - AD7nn]
pattern="AD[1-7]\d{2}"
Amerika postcode [nnnnn] / ZIP+4 code [nnnnn-nnnn]
pattern="\d{5}(-\d{4})?"
Brasilien [nnnnn-nnn]
pattern="[0-9]{5}-[0-9]{3}"
Luxembourg NPA [L-nnnn]
pattern="L-\d{4}"
Schweden [nnn nn]
pattern="\d{3} \d{2}"
Spanien [01nnn - 52nnn]
pattern="((0\d|[1-4]\d|5[0-2]))\d{3}"


ZIP (international)

Fundstücke, ungeprüft und unbewertet!

Kanada [A0A 0A0](John Nisbe: Canadian Postal Codes never contain the letters: D F I O Q U W.)
pattern="[ABCEGHJKLMNPRSTVXYZ]\d[A-Z] \d[A-Z]\d
Danish & Faroe Island postcode format is nnn or nnnn
pattern="[0-9]{3,4}"
Dutch postcode format is 1234 aa
pattern="[1-9][0-9]{3} ?[a-zA-Z]{2}"
Polish postcode format is nn-nnn
pattern="[0-9]{2}\-[0-9]{3}"
UK Postal postcode [A0 0AA - AA0A 0AA - A0 0AA,- A00 0AA,- A0A 0AA,- AA0 0AA,- AA00 0AA,- AA0A 0AA]
pattern="[A-Za-z]{1,2}[0-9Rr][0-9A-Za-z]? [0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}
Newzeland
pattern="[0-9]{1} [A-Za-z]{1} [A-Za-z]+, [A-Za-z]+, [A-Za-z]+"


Warum funktioniert das nicht?

Einige Beispiele die ich im Netz gefunden habe sind entweder zu sehr vereinfacht, zu kompliziert oder schlichtweg falsch. Einige sind offenbar nie überprüft worden. Die fehlerhaften Beispiele eignen sich gut um das System richtig zu verstehen.

Luxembourg Postleitzahl [L-nnnn].
<input type="text" pattern="(L\s*(-|—|–))\s*?[\d]{4}">
Meine Meinung: Also das L ist klar. Wozu dann kein oder gleich mehrere Leerzeichen \s* folgen sollen, erschliest sich mir nicht. Laut der Post Luxembourg ist das korrekte Format L-nnnn. Ein Bindestrich, der einen Halbgeviertstrich(?) und einen Gedankenstrich als Alternative hat (-|—|–), kompletter Unsinn, wer soll das wie eingeben, abgesehen von der Regelwidrigkeit? Außerdem wäre das in einer Auswahliste [-—–] besser ausgehoben. Dann folgten wieder mehrere \s* unsinnige Leerzeichen. Was das folgende Fragezeichen \s*? da macht? Der Stern bedeudet doch schon kein oder mehrere, das brauche ich nicht in Frage zu stellen. Die eckige Klammer [\d] brauchen wir nicht, es markiert eine Auswahlliste, die wir hier gar nicht haben.
Tatsächlich wird mit diesem Muster eine richtige Eingabe als korrekt erkannt, allerdings wollen wir nicht nur die Bestätigung, dass eine Eingabe im Sinne der Vorschrift richtig ist, sondern auch die falschen markieren. Das tut dieses Muster nicht.

Amerika postcode [nnnnn] / ZIP+4 code [nnnnn-nnnn].
<input type="text" pattern="(\d{5}([\-]\d{4})?)">
Meine Meinung: Das Muster muss nicht in runde Klammern eingeschlossen werden, (..) die eckige Klammer [..] steht für Auswahl, da es nur ein Zeichen beinhaltet brauchen wir es nicht. Der Bindstrich steht solo \- und muß nicht maskiert werden.