Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Experiment: Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.

Modifier: (?ims-ims:...)

Limited availability

EinModifier überschreibt dieFlag-Einstellungen in einem bestimmten Teil eines regulären Ausdrucks. Er kann verwendet werden, um Flags zu aktivieren oder zu deaktivieren, die die Bedeutungen bestimmter Regex-Syntaxelemente ändern. Diese Flags sindi,m unds.

Syntax

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

Hinweis:JavaScript hat nur die "bounded" Modifier-Form, bei der das Muster innerhalb der Modifier-Gruppe platziert wird. Die meisten anderen Sprachen, die Modifier unterstützen, haben eine "unbounded" Form, bei der der Modifier bis zum Ende der am nächsten liegenden umschließenden Gruppe angewendet wird.

Parameter

flags1Optional

Eine Zeichenkette von Flags, die aktiviert werden sollen. Kann jede Kombination voni,m unds enthalten.

flags2Optional

Eine Zeichenkette von Flags, die deaktiviert werden sollen. Kann jede Kombination voni,m unds enthalten, darf jedoch keine Flags enthalten, die inflags1 enthalten sind.

pattern

Ein Muster, das alles enthält, was Sie in einem Regex-Literal verwenden können, einschließlich einerDisjunction.

Beschreibung

Einige Flags ändern die Bedeutungen von Regex-Syntaxelementen:

  • Dasi-Flag macht den Regex durch alleLiteralzeichen undZeichenklassen implizit in Kleinbuchstaben zu deklariertem insensitive.
  • Dasm-Flag ändert das Verhalten vonEingabegrenzen-Assertions^ und$, um den Anfang und das Ende jeder Zeile sowie den Anfang und das Ende der Eingabezeichenkette zu erfassen.
  • Dass-Flag ändert das Verhalten desWildcard-Zeichens. so, dass es jedes Zeichen einschließlich Zeilenendzeichen erfasst.

Manchmal möchten Sie, dass diese Änderungen nur in einem bestimmten Teil eines Regex-Musters wirksam werden. Sie können dies tun, indem Sie diesen Teil in einen Modifier einschließen. Zum Beispiel:

js
/(?i:Hello) world/;

In diesem Regex ist dasi-Flag nur für denHello-Teil des Musters aktiviert. Derworld-Teil ist groß-/klein-schreibungssensitiv. Daher passt es zuHello world,hello world undHELLO world, aber nicht zuHELLO WORLD. Das Folgende ist gleichwertig, indem dasi-Flag global aktiviert und dann für denworld-Teil deaktiviert wird:

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

Die Parameterflags1 undflags2 können jede Kombination voni,m unds enthalten. Die Flags müssen jedoch eineindeutig zwischenflags1 undflags2 sein — Sie können ein Flag nicht doppelt aktivieren oder deaktivieren oder ein Flag aktivieren und dann sofort deaktivieren.

Die Parameterflags1 undflags2 sind optional, aber mindestens einer muss nicht leer sein.(?flags1-:pattern) ist ein Modifier, der nur Flags aktiviert (äquivalent zu(?flags1:pattern)).(?-flags2:pattern) ist ein Modifier, der nur Flags deaktiviert.(?:pattern) ist nur einenicht-erfassende Gruppe, und(?-:pattern) ist ein Syntaxfehler.

Andere Flags sind in einem Modifier unsinnig und führen zu Syntaxfehlern, wenn sie eingeschlossen werden:

  • Die Flagsg undy bestimmen das Verhalten mehrerer Aufrufe vonexec() und beeinflussen das Übereinstimmungsverhalten des gesamten Regex.
  • Dasd-Flag aktiviert zusätzliche Informationen imexec()-Ergebnis und beeinflusst das Übereinstimmungsverhalten des gesamten Regex.
  • Die Flagsu undv ändern das Verhalten der Regex-Engine auf eine Weise, die zu komplex ist, um lokal modifiziert zu werden. Sie haben auch globale Auswirkungen auf den Regex, wie das Fortschreiten deslastIndex.

Beispiele

Übereinstimmung eines mehrzeiligen Formats nur am Anfang der Zeichenkette

Der folgende Regex definiert ein Format für eine mehrzeilige Zeichenkette. Das erste^ stellt den Anfang der gesamten Eingabezeichenkette dar, indem es sich innerhalb eines(?-m:)-Modifiers befindet, während alle anderen^-Zeichen den Anfang einer Zeile darstellen:

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 stringconst input2 = `\n${input}`;pattern.test(input2); // false

Bestimmte Wörter ohne Berücksichtigung der Groß-/Kleinschreibung finden

Stellen Sie sich vor, Sie suchen alle Variablendeklarationen, diefoo oderbar heißen (da sie schlechte Namen sind). Das Wort kann in beliebiger Groß-/Kleinschreibung erscheinen, aber Sie wissen, dass das Schlüsselwort immer in Kleinbuchstaben ist, also können Sie das tun:

js
const pattern = /(?:var|let|const) (?i:foo|bar)\b/;pattern.test("let foo;"); // truepattern.test("const BAR = 1;"); // truepattern.test("Let foo be a number"); // false

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# prod-RegularExpressionModifiers

Browser-Kompatibilität

Siehe auch

MDN-Feedback-Box

Diese Seite wurde automatisch aus dem Englischen übersetzt.


[8]ページ先頭

©2009-2025 Movatter.jp