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
(?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
flags1Optional-
Eine Zeichenfolge mit zu aktivierenden Flags. Sie kann eine beliebige Kombination aus
i,mundsenthalten. flags2Optional-
Eine Zeichenfolge mit zu deaktivierenden Flags. Sie kann eine beliebige Kombination aus
i,mundsenthalten, darf aber keine Flags enthalten, die bereits inflags1vorkommen. 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
imacht 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:
/(?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:
/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
gundybestimmen, wie sich mehrere Aufrufe vonexec()verhalten, und beeinflussen das Abgleichverhalten des gesamten regulären Ausdrucks. - Das Flag
daktiviert zusätzliche Informationen im Ergebnis vonexec()und beeinflusst das Abgleichverhalten des gesamten regulären Ausdrucks. - Die Flags
uundvä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, wielastIndexweitergesetzt 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:
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:
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> |