HTML-Attribut: pattern

Das pattern-Attribut gibt einen regulären Ausdruck an, den der Wert des Formularsteuerungselements erfüllen muss. Wenn ein nicht-null Wert nicht den durch den pattern-Wert festgelegten Einschränkungen entspricht, ist die schreibgeschützte Eigenschaft patternMismatch des ValidityState-Objekts wahr.

Probieren Sie es aus

Übersicht

Das pattern-Attribut ist ein Attribut der text, tel, email, url, password und search Eingabetypen.

Das pattern-Attribut, wenn es angegeben ist, ist ein regulärer Ausdruck, den der value des Eingabefeldes erfüllen muss, um die Einschränkungsvalidierung zu bestehen. Es muss ein gültiger JavaScript-regulärer Ausdruck sein, wie er vom RegExp-Typ verwendet wird und in unserem Leitfaden zu regulären Ausdrücken dokumentiert ist.

Der reguläre Ausdruck des Musters wird mit dem 'v'-Flag kompiliert. Dies macht den regulären Ausdruck unicode-bewusst und ändert auch die Art und Weise, wie Zeichenklassen interpretiert werden. Dies ermöglicht Schnitt- und Subtraktionsoperationen von Zeichenklassensätzen und zusätzlich zu ] und \ müssen die folgenden Zeichen mit einem \ Backslash maskiert werden, wenn sie Literalzeichen darstellen: (, ), [, {, }, /, -, |. Vor Mitte 2023 wurde stattdessen das 'u'-Flag angegeben; Wenn Sie älteren Code aktualisieren, erläutert dieses Dokument die Unterschiede.

Der reguläre Ausdruck des Musters muss den gesamten value des Eingabefeldes übereinstimmen, anstatt nur eine Teilzeichenkette zu übereinstimmen - als ob ein ^(?: am Anfang des Musters und )$ am Ende impliziert wäre.

Keine Schrägstriche sollten um den Mustertext angegeben werden. Kein regulärer Ausdruck wird angewendet, wenn der Attributwert fehlt, eine leere Zeichenkette oder ungültig ist.

Einige der Eingabetypen, die das Musterattribut unterstützen, insbesondere die email und url Eingabetypen, haben erwartete Wertesyntaxen, die übereinstimmen müssen. Wenn das Musterattribut nicht vorhanden ist und der Wert nicht der erwarteten Syntax für diesen Wertetyp entspricht, ist die schreibgeschützte Eigenschaft typeMismatch des ValidityState-Objekts wahr.

Einschränkungsvalidierung

Wenn der Wert des Eingabefeldes nicht die leere Zeichenkette ist und der Wert nicht den gesamten regulären Ausdruck erfüllt, wird ein Verstoß gegen die Einschränkung gemeldet, indem die Eigenschaft patternMismatch des ValidityState-Objekts wahr ist.

Hinweis: Wenn das pattern-Attribut ohne Wert angegeben ist, ist sein Wert implizit die leere Zeichenkette. Daher führt jeglicher nicht-leerer Eingabewert zu einem Verstoß gegen die Einschränkung.

Benutzerfreundlichkeit und Zugänglichkeitsüberlegungen

Beim Einfügen eines pattern-Attributs sollten Sie eine Beschreibung des Musters in sichtbarem Text in der Nähe der Steuerung bereitstellen. Außerdem sollten Sie ein title-Attribut hinzufügen, das eine Beschreibung des Musters gibt. Benutzeragenten können die Titelinhalte während der Einschränkungsvalidierung verwenden, um dem Benutzer mitzuteilen, dass das Muster nicht übereinstimmt. Einige Browser zeigen ein Tooltip mit den Titelinhalten an, was die Benutzerfreundlichkeit für sehende Benutzer verbessert. Außerdem kann Assistenztechnologie den Titel vorlesen, wenn die Steuerung den Fokus erhält, aber dies sollte nicht als Zugänglichkeitsmerkmal angesehen werden.

Nur auf das title-Attribut für die visuelle Anzeige von Textinhalten zu vertrauen, wird nicht empfohlen, da viele Benutzeragenten das Attribut nicht auf zugängliche Weise exponieren. Obwohl einige Browser ein Tooltip anzeigen, wenn ein Element mit einem title-Attribut fokussiert wird, lässt das Tastatur- und Touch-Benutzer außen vor. Dies ist einer von mehreren Gründen, warum Informationen, die zeigen, wie man die Steuerung so ausfüllt, dass sie die Anforderungen erfüllt, integriert sein müssen.

Da titles von einigen Browsern für die Fehlermeldung verwendet werden, sollten Sie vorsichtig sein, sie nicht so zu formulieren, als ob ein Fehler aufgetreten wäre, da Browser den Titel manchmal auch als Text beim Überfahren anzeigen, er also auch in Nicht-Fehlersituationen erscheint.

Beispiele

Ein Telefonmuster übereinstimmen

Gegeben sei Folgendes:

html
<p>
  <label>
    Enter your phone number in the format (123) - 456 - 7890 (<input
      name="tel1"
      type="tel"
      pattern="[0-9]{3}"
      placeholder="###"
      aria-label="3-digit area code"
      size="2" />) -
    <input
      name="tel2"
      type="tel"
      pattern="[0-9]{3}"
      placeholder="###"
      aria-label="3-digit prefix"
      size="2" />
    -
    <input
      name="tel3"
      type="tel"
      pattern="[0-9]{4}"
      placeholder="####"
      aria-label="4-digit number"
      size="3" />
  </label>
</p>

Hier haben wir 3 Abschnitte für eine nordamerikanische Telefonnummer mit einer impliziten Bezeichnung, die alle drei Komponenten der Telefonnummer umschließt, wobei jeweils 3 Ziffern, 3 Ziffern und 4 Ziffern erwartet werden, wie es durch das auf jedem gesetzten pattern-Attribut definiert ist.

Wenn die Werte zu lang oder zu kurz sind oder Zeichen enthalten, die keine Ziffern sind, wird das patternMismatch wahr sein. Wenn true, entspricht das Element den :invalid CSS-Pseudoklassen.

css
input:invalid {
  border: red solid 3px;
}

Wenn wir stattdessen die Attribute minlength und maxlength verwendet hätten, könnten wir gesehen haben, dass validityState.tooLong oder validityState.tooShort wahr sind.

Ein Muster angeben

Sie können das pattern-Attribut verwenden, um einen regulären Ausdruck anzugeben, dem der eingegebene Wert entsprechen muss, um als gültig angesehen zu werden (sehen Sie sich Validierung mit einem regulären Ausdruck an, um einen einfachen Crashkurs zur Verwendung regulärer Ausdrücke zur Validierung von Eingaben zu erhalten).

Das folgende Beispiel beschränkt den Wert auf 4-8 Zeichen und erfordert, dass er nur Kleinbuchstaben enthält.

html
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input
      type="text"
      id="uname"
      name="name"
      required
      size="45"
      pattern="[a-z]{4,8}"
      title="4 to 8 lowercase letters" />
    <span class="validity"></span>
    <p>Usernames must be lowercase and 4-8 characters in length.</p>
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>

Dies wird wie folgt angezeigt:

Spezifikationen

Specification
HTML Standard
# attr-input-pattern

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch