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)"
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}"
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}"
Ö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?)"
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.
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}"
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}"