Das pattern-Attribut – besser reguläre Ausdrücke – sind Hexenkessel. Zwar finden wir im Web reguläre Ausdrücke für die verschiedensten Anwendungen, aber sobald reguläre Ausdrücke ein komplexes Muster wie Email oder Datum validieren sollen, müssen viele Extras berücksichtigt werden. Datum und Email überlässt man am besten dem Input-Typ: input type=”date” und input type=”email”. Die Regeln der Formular input pattern folgen zwar den Regeln der RegEx von Javascript aber es gibt doch Unterschiede. Die bei Programmiersprachen benötigten Anfangs- und Endebezeichner ^ … $brauchen bei HTML5 pattern also nicht verwendet werden. Man sieht dies zwar oft ^[0-9]{5}$, und es führt offenbar auch nicht unbedingt zu einem Fehler, aber es wird, wie Du ja nun weißt, immer die gesamte Eingabe verglichen. Du musst Dich darum nicht auch noch kümmern. Richtig ist hier also einfach: [0-9]{5}. Ein pattern ist ein Suchmuster, genauer ein regulärer Ausdruck. Es wird geprüft, ob der Inhalt auf dieses Suchmuster zutrifft. In Webformularen wird immer die gesamte Eingabe in einem Eingabefeld mit dem vorgegebenen Muster verglichen. Du kannst nicht Teile der Eingabe prüfen.

Es gibt für viele Programmiersprachen Vergleichsmusterregeln. (Regular Expresions, RegEx, RegExp, …) Sie unterscheiden sich in dem einen oder anderen. Die Regular Expresions der Input pattern folgen nach dem Willen der 3W den Regeln von JavaScript und nicht dem von Perl oder irgendeiner anderen Sprache! Es macht keinen Sinn ein Muster das du bei C, C++, Java, Python, Ruby oder PHP im Netz gefunden hast, einfach zu kopieren, es wird vermutlich nicht das tun, was du haben möchtest. Vielleicht sieht es ähnlich aus, muss aber an unser formular input pattern angepasst werden. Allerdings gibt es auch einige von JS abweichende Regeln, siehe oben. Der Titel dieses Artikels ist mehrdeutig. Für pattern (engl. für Muster) siehe auch Dennoch muss die Benutzereingabe durch ein Script und/oder durch die Anwendung auf dem Server validiert werden, denn der Nutzer kann einen alten Browser verwenden, der das pattern-Attribut nicht unterstützt. Das Muster für Eingabefelder ist der Ausdruck, mit dem verglichen (nicht gesucht) wird. Das einfachste Muster besteht exakt aus den Zeichen die mit der Eingabe verglichen werden. Dies können auch Texte, Metazeichen, Gruppen von Zeichen oder Zeichenklassen sein.

Ein Muster das wir später genauer untersuchen, könnte zum Beispiel so aussehen:pattern=”01(5[1279]d|6[023]|7d{2})”. Einfache Muster werden aus Zeichen konstruiert, für die man eine direkte Übereinstimmung finden möchte. Buchstaben, Zahlen oder Sonderzeichen. Nur wenn die Eingabe mit dem Muster übereinstimmt, wird die Eingabe auch vom Browser akzeptiert. Auch ein einfaches Wort oder eine Zahlenfolge sind ein gültiges pattern. pattern=”Hallo Welt”kann bereits ein einfaches Muster sein, das vom Browser als Basis für den Vergleich mit der Eingabe benutzt wird. Es wird nur diese Buchstabenkombination akzeptiert. Sonderzeichen `§§15 & 16` und Zahlen 0815 werden genauso behandelt.