inputPattern

input pattern Musterbuch

Einige Beispiele aus dem realen Leben. Muster zum kopieren und als Vorlagen zum weiterentwickeln. Ich habe versucht zu beschreiben wie ich auf die Lösung gekommen bin. So kann jeder die (also meine) Logik nachvollziehen, und das Beispiel für die eigenen Erfordernisse zurechtbiegen. Natürlich sind meine Lösungen nicht der Weisheit letzter Schluss. Es gibt sicher sehr oft eine andere, vielleicht auch eine schönere, schnellere, bessere Lösung.
Mit den input pattern soll die Eingabe des Useres bereits bei der Eingabe überprüft werde. Dazu muß mindestens das Muster korrekt sein. Das sind sie oftmals nicht, deshalb ein paar Negativbeispiele. Wie immer ohne Gewähr!

Telefon

Eine Telefonnummer ist zwar normalerweise nur eine Zahl, aber sie folgt natürlich einigen Regeln. Um eine Rufnummer im Ausland zu erreichen wird meist entweder eine Doppelnull oder als Platzhalter ein + Zeichen vorangestellt. Wie im Land die Nummer verteilt werden wird durch Nationale Regeln bestimmt. Ist z.B. in Deutschland eine Mobilnummer schon an der Vorwahl erkennbar, muss das in anderen Länder nicht zwingend so sein.

Mobilfunk Vorwahl

Die deutsche Mobilfunk-Vorwahlen sind bei den Übungen beschrieben.

Internationale Vorwahlen

Speziell internationale Vorwahlen fictive: +88 Format: (0088), 0088, (+88) ,+88 (fictive: +88, Ortsvorw. ohne 0!)
pattern="((\+88|\(\+88\)|\(0088\)|0088) ?)"

Speziell internationale Vorwahlen fictive: +88 Format: (0088), 0088, (+88) ,+88 oder 0 (fictive: +88, Ortsvorw. mit 0!)
pattern="(((\+88|\(\+88\)|\(0088\)|0088) ?)|0)"

+11
(+11)
0011
(0011)
-11
(+22)
011
0011)

Allgemein internationale Vorwahlen Format: 001nnn, +1nnn, 00Nnn, +Nnn, (001nnn), (+1nnn), (00Nnn), (+Nnn)
pattern="((\+|00)1[1-9]\d{2}|\((\+|00)1[1-9]\d{2}\))|((\+|00)[2-9]\d{1,2}|\((\+|00)[2-9]\d{1,2}\))"

001123
+1123
(00212)
+312
0049
002123
+185
(00212
0712
+3128

Internationale Telefonnummern

Französische Telefonnummer Format: 0033 n nnnn nnnn oder [+33 n nnnn nnnn] oder [0n nnnn nnnn]
pattern="(0|\+33|\(\+33\)|\(\0033\)|0033) ?[1-79]([\.\- ]?\d\d){4}"

+33912341234
0033 9 1234 1234
0912341234
+33812341234
339123412342
0812341234

USA Format: (001)(2nn-nnn-nnnn) - (+1)(9nn-nnn-nnnn)
pattern="((00|\+)1-)?[2-9]\d{2}-\d{3}-\d{4}"

Spanish phone number Format: (+34) 9 nnnn nnnn oder 00348nnnnnnnn (Ortsvorw. ohne 0!)
pattern="((\+34|\(\+34\)|\(0034\)|0034) ?)?[89]( ?\d{4}){2}"

0034812341234
(+34)8 1234 1234
0812341234
(+34 )7 1234 1234

UK Phone Number Format: (+44)1n nnnnnn, 02n nnnnnn
pattern="(((\+44|\(\+44\)|\(0044\)|0044) ?)|0)(1[1-9]|2[03489])\d{6}"

004423123456
+44 23123456
023123456
+44023123456
+44 10123456
032123456

Niederlande Format: +31 nnn nnnnnn, 0031 nn nnnnnnn, 0nnn nnnnnn
pattern="(((\+31|0031) ?)|0)((?=.{9}$)[1-9]\d{1,2}\d{6,7}|(?=.{10}$)[1-9]\d{1,2} \d{6,7})"

+31 123123456
+31 12 1234567
0031 123 123456
0123 123456
0 123123456
+45 123 123456
031 123 123456

Computer

Beim Arbeiten mit dem PC gibt es natürlich sehr viele Zahlen die sich in Muster packen lassen.

IPv4-Adressen

Adressen in IPv4 verwenden ausschließlich dezimale Zahlen 4 Blöcken, die jeweils durch einen Punkt voneinander getrennt sind. Jede der Zahlen kann im Bereich zwischen 0 und 255 liegen.

IPv4 Adresse Format: 0.0.0.0 bis 255.255.255.254
pattern="((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-4]|2[0-4]\d|[01]?\d\d?)"

255.125.25.220
192.168.1.15
127.0.0.1
255,125.25.220
255:125:25:220
255.256.25.156

Private IP Adresse Format: 10.0.0.0-10.255.255.255 oder 172.16.0.0-172.31.255.255 oder 192.168.0.0-192.168.255.255
pattern="(0?10\.((25[0-5]|2[0-4]\d|[01]?\d\d?))|172\.0?(1[6-9]|2\d|3[01])|192\.168)(\.(25[0-4]|2[0-4]\d|[01]?\d\d?)){2}"

10.0.0.1
172.16.0.25
192.168.200.01
172.026.50.50
12.0.0.1
172.216.0.25
193.168.200,001
172.032.50.50

Öffentliche IP Adresse Format: kein 10...oder 169.254... oder 172.16...-172.31... oder 192.168...-192.168..
pattern="(?!10|169.254|172.0?(1[6-9]|2\d|3[01])|192.168)((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-4]|2[0-4]\d|[01]?\d\d?)"

12.0.0.1
172.216.0.25
193.168.200.001
172.032.50.50
10.0.0.1
172.16.0.25
192.168.200.01
172.026.50.50

IPv6-Adressen

IPv6-Adressen bestehen aus 8 Blöcken, getrennt durch einen Doppelpunkt, mit jeweils vierstelligen Hexadezimalzahlen. Wenn ein oder mehrere Segmente den Wert 0 haben, können diese ausgelassen und durch einen zweiten Doppelpunkt ersetzt werden. Die URL wird in eckige Klammernm gesetzt.

IPv6 Adresse (o. Kürzung)Format: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
pattern="([\dA-Fa-f]{0,4}:){7}[\dA-Fa-f]{1,4}"

2001:0DB8:0000:0001:0000:0000:0010:01FF
2001:DB8::1::10:1FF
2001.0DB8.0000.0001.0000.0000.0010.01FF
2001:DB8::1:::10:1FF

IPv6 URL Notation Format: https://[5c55:d8bd:d3aa:a:850::a34:8420]/
pattern="https?://\[([\dA-Fa-f]{0,4}:){7}[\dA-Fa-f]{0,4}\]"

https://[2001:0DB8:0000:0001:0000:0000:0010:01FF]
https://[2001:DA8::1:::10:1FF]
https://2001:0DB8:0000:0001:0000:0000:0010:01FF
https://[2001:DG8::1:::10.1FF]

Web Adressen

Länderspezifische TLDs haben immer genau zwei Buchstaben. Generische TLDs sind 3 bis 12 (?) Zeichen lang. TLD-Liste
Für Second-Level-Domain reicht 1 Zeichen. Als Maximallänge gilt laut rfc1035 überall 63.

Für die Validierung von URL existiert in HTML5 eigentlich ein eigener Eingabetyp, <input type="url"> aber wir bauen trotzdem unser eigenes Muster.

http oder https Format: https://x.xx oder https://x.xx

pattern="https?://.{1,63}\.[A-z]{2,13}"
https://example.org
https://example.org
http:/example.org
ftp://example.org

Top-Level-, Second-Level- und Third-Level-Domain Format: example.tld oder user.example.tld
pattern="([A-z\d]([A-z\d-]{0,61}[A-z\d])?\.)+[A-z]{2,12}"

test.example.org
example.org
test.exampl-.org
test.example.o

Bank

IBAN

Die IBAN setzt sich aus dem Länderkürzel und einer Zahlenfolge (meist Bankleitzahl und Kontonummer) zusammen. Die IBAN kann maximal 34 Zeichen enthalten. (Über die mindestzahl habe ich nichts gefunden, Norwegen ´hat 15 Stellen) Für die Mensch-Maschine-Schnittstelle darf die IBAN in Vierergruppen notiert werden, es gibt zwar dazu keine Vorschrift aber die von mir bemusterte Schreibweise ist nun üblich.

Deutsche IBAN (20) Format: DE12345678901234567890 oder DE12 3456 7890 1234 5678 90
pattern="DE\d{2}( )?(\d{4}\1){4}\d{2}"

DE1212341234123412
DE12 1234 1234 1234 12
FR1212341234123412
DE 1212 3412 3412 3412

Malta IBAN (31) Format: MT12 1234 1234 1234 1234 1234 1234 123
pattern="MT\d{2}( )?(\d{4}\1){6}\d{3}"

MT12 1234 1234 1234 1234 1234 1234 123
MT12123412341234123412341234123
MT12 1234 1234 1234 1234 1234 1234 I23
MT 12123 41234 12341 23412 3412 34123

INT. IBAN (15-34) Format: XX3456789012345 bis XX34 5678 9012 3456 7890 1234 5678 9012 34
pattern="[A-Z]{2}\d{13,32}|(?=.{18,42}$)[A-Z]{2}\d{2}( )(\d{4}\1){2,7}\d{1,4}"

BIC und Bankleitzahl BLZ

Der Bank Identifier Code (auch SWIFT-Code) ist die neue Kennung (in DE ehemals 'Bankleitzahl') für Kreditinstitute. Der BIC hat eine Länge von 11 alphanumerischen Zeichen und folgenden Aufbau: 4 Buchstaben, 2 Länderkennung, 2 Ortscode (erste nicht 0 oder 1, zweite nicht O), 3 stellige Kennung (eventuell Füllung XXX)

Deutsche BIC (8-11) Format: AAAABBCCXXX
pattern="[A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}"

BELADEBEXXX
HELADEF1RRS
BELADEBOABC
BELADE1E123

Deutsche Bankleitzahl Format: nnn nnn nn
pattern="(\d{3} ){2}\d{2}"

640 901 00 64 090 100

Datum und Zeit

Tage, Monate, Jahre

Tage Format: 01-31; 1-31
pattern="0?[1-9]|[0-2]\d|3[01]"
Wochentag Format: Wochentag
pattern="(Mon|Diens|Donners|Frei|Sams|Sonn)tag|Mittwoch"
pattern="M[oi]|D[io]|Fr|S[ao]"
pattern="Mon|Tues?|Wed|Thurs?|Fri|S(at|un)"
Monat Format: 01-12; 1-12
pattern="0?[1-9]|1[0-2]"
Monate geschrieben Format: Monat, Month
pattern="(Jan|Feb|Mrz|Apr|Mai|Ju[nl]|Aug|Sep|Okt|Nov|Dez"
pattern="(Janu|Febru)ar|März|April|Mai|Ju(ni|li)|August|(Septem|Okto|Novem|Dezem)ber"
pattern="(Janu|Febru)ary|March|April|May|Ju(ne|ly)|August|(Septem|Octo|Novem|Decem)ber"
pattern="(Janv|Fév)ier|Mars|Avril|Mai|Jui(n|llet)|Août|(Septem|Octo|Novem|Décem)bre"
pattern="(ene|febre)ro|marzo|abril|mayo|ju(nio|lio)|agosto|(septiem|octu|noviem|diciem)bre"
Jahr Format: JJ, JJJJ kein Jahr "0000"
pattern="\d{2}|(?!0000)\d{4}"

Datenschutz

Impressum