Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Modifikator: (?ims-ims:...)

Baseline 2025
Neu verfügbar

Seit September 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Ein Modifikator überschreibt die Einstellungen von Flags in einem bestimmten Teil eines regulären Ausdrucks. Damit lassen sich Flags aktivieren oder deaktivieren, die die Bedeutung bestimmter Syntaxelemente eines regulären Ausdrucks ändern. Diese Flags sind i, m und s.

Syntax

regex
(?flags1:pattern)
(?flags1-flags2:pattern)

Hinweis: JavaScript unterstützt nur die „begrenzte“ Form des Modifikators, bei der das Muster innerhalb der Modifikatorgruppe steht. Die meisten anderen Sprachen, die Modifikatoren unterstützen, bieten auch eine „unbegrenzte“ Form, bei der der Modifikator bis zum Ende der nächstgelegenen umschließenden Gruppe gilt.

Parameter

flags1 Optional

Eine Zeichenfolge mit zu aktivierenden Flags. Sie kann eine beliebige Kombination aus i, m und s enthalten.

flags2 Optional

Eine Zeichenfolge mit zu deaktivierenden Flags. Sie kann eine beliebige Kombination aus i, m und s enthalten, darf aber keine Flags enthalten, die bereits in flags1 vorkommen.

pattern

Ein Muster, das alles enthalten kann, was in einem Regex-Literal zulässig ist, einschließlich einer Disjunktion.

Beschreibung

Einige Flags ändern die Bedeutung von Syntaxelementen regulärer Ausdrücke:

  • Das Flag i macht den regulären Ausdruck unabhängig von der Groß- und Kleinschreibung, indem es die Schreibweise von literalen Zeichen und Zeichenklassen normalisiert.
  • Das Flag m ändert das Verhalten der Zusicherungen für Eingabegrenzen ^ und $: Sie entsprechen dann nicht nur dem Anfang und Ende der Eingabezeichenfolge, sondern auch dem Anfang und Ende jeder Zeile.
  • Das Flag s ändert das Verhalten des Platzhalters .: Er entspricht dann jedem Zeichen, einschließlich Zeilenumbruchzeichen.

Manchmal sollen diese Änderungen nur in einem bestimmten Teil eines Regex-Musters gelten. Dazu können Sie diesen Teil in einen Modifikator einschließen. Zum Beispiel:

js
/(?i:Hello) world/;

In diesem regulären Ausdruck ist das Flag i nur für den Teil Hello des Musters aktiviert. Beim Teil world wird zwischen Groß- und Kleinschreibung unterschieden. Daher werden Hello world, hello world und HELLO world erkannt, nicht aber HELLO WORLD. Das folgende Muster ist gleichwertig: Es aktiviert das Flag i für den gesamten regulären Ausdruck und deaktiviert es anschließend für den Teil world:

js
/Hello (?-i:world)/i;

Die Parameter flags1 und flags2 können jede beliebige Kombination aus i, m und s enthalten. Jedes Flag darf jedoch in flags1 und flags2 zusammen nur einmal vorkommen: Sie können ein Flag weder zweimal aktivieren oder deaktivieren noch es aktivieren und unmittelbar danach deaktivieren.

Die Parameter flags1 und flags2 sind optional, aber mindestens einer von ihnen darf nicht leer sein. (?flags1-:pattern) ist ein Modifikator, der nur Flags aktiviert (gleichwertig mit (?flags1:pattern)). (?-flags2:pattern) ist ein Modifikator, der nur Flags deaktiviert. (?:pattern) ist lediglich eine nicht-erfassende Gruppe, und (?-:pattern) ist ein Syntaxfehler.

Andere Flags sind in einem Modifikator nicht sinnvoll und verursachen daher einen Syntaxfehler, wenn sie darin enthalten sind:

  • Die Flags g und y bestimmen, wie sich mehrere Aufrufe von exec() verhalten, und beeinflussen das Abgleichverhalten des gesamten regulären Ausdrucks.
  • Das Flag d aktiviert zusätzliche Informationen im Ergebnis von exec() und beeinflusst das Abgleichverhalten des gesamten regulären Ausdrucks.
  • Die Flags u und v ändern das Verhalten der Regex-Engine auf eine Weise, die zu komplex ist, um sie auf einen Teil des Musters zu beschränken. Sie wirken sich außerdem auf den gesamten regulären Ausdruck aus, beispielsweise darauf, wie lastIndex weitergesetzt wird.

Beispiele

Ein mehrzeiliges Format nur am Anfang der Zeichenfolge erkennen

Der folgende reguläre Ausdruck definiert ein Format für eine mehrzeilige Zeichenfolge. Das erste ^ steht für den Anfang der gesamten Eingabezeichenfolge, da es sich innerhalb eines (?-m:)-Modifikators befindet. Alle anderen ^-Zeichen stehen dagegen für den Anfang einer Zeile:

js
const pattern = /(?-m:^)---\n^title:.*^slug:.*^---/ms;

const input = `---
title: "Modifier: (?ims-ims:...)"
slug: Web/JavaScript/Reference/Regular_expressions/Modifier
---`;

pattern.test(input); // true

// Extra line break at the start of string
const input2 = `\n${input}`;

pattern.test(input2); // false

Bestimmte Wörter unabhängig von der Groß- und Kleinschreibung erkennen

Angenommen, Sie suchen nach allen Variablendeklarationen mit den Namen foo oder bar (weil dies schlechte Namen sind). Der Name kann in beliebiger Groß- und Kleinschreibung vorkommen, aber Sie wissen, dass das Schlüsselwort immer kleingeschrieben ist. Daher können Sie Folgendes verwenden:

js
const pattern = /(?:var|let|const) (?i:foo|bar)\b/;

pattern.test("let foo;"); // true
pattern.test("const BAR = 1;"); // true
pattern.test("Let foo be a number"); // false

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# prod-RegularExpressionModifiers

Browser-Kompatibilität

Siehe auch