Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
RegExp() Konstruktor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
DerRegExp() Konstruktor erstelltRegExp Objekte.
Für eine Einführung in reguläre Ausdrücke lesen Sie dasKapitel über reguläre Ausdrücke imJavaScript-Leitfaden.
In diesem Artikel
Probieren Sie es aus
const regex1 = /\w+/;const regex2 = new RegExp("\\w+");console.log(regex1);// Expected output: /\w+/console.log(regex2);// Expected output: /\w+/console.log(regex1 === regex2);// Expected output: falseSyntax
new RegExp(pattern)new RegExp(pattern, flags)RegExp(pattern)RegExp(pattern, flags)Hinweis:RegExp() kann mit oder ohnenew aufgerufen werden, jedoch manchmal mit unterschiedlichen Effekten. SieheRückgabewert.
Parameter
patternDer Text des regulären Ausdrucks. Dies kann auch ein anderes
RegExp-Objekt sein.flagsOptionalWenn angegeben, ist
flagsein String, der die hinzuzufügenden Flags enthält. Alternativ ersetzt derflags-String alle Flags des geliefertenRegExp-Objekts alspattern(undlastIndexwird auf0zurückgesetzt).flagskann eine beliebige Kombination der folgenden Zeichen enthalten:d(indices)Erzeugt Indizes für Teilstring-Übereinstimmungen.
g(global)Findet alle Übereinstimmungen anstelle des Stopps nach der ersten Übereinstimmung.
i(ignore case)Unterschiede in der Groß-/Kleinschreibung werden beim Abgleich ignoriert.
m(multiline)Behandelt Anfangs- und Endprüfungen (
^und$) als über mehrere Zeilen hinweg wirkend. Anders ausgedrückt, es wird der Anfang oder das Endejeder Zeile (durch\noder\rbegrenzt) abgeglichen, nicht nur der sehr Anfang oder das Ende der gesamten Eingabe.s(dotAll)Erlaubt es
.Zeilenumbrüche zu matchen.u(unicode)Behandelt
patternals eine Folge von Unicode-Codepunkte.v(unicodeSets)Ein Upgrade des
u-Flags, das Set-Notation in Zeichenklassen sowie Zeichenketteneigenschaften ermöglicht.y(sticky)Passt nur ab dem durch die
lastIndex-Eigenschaft dieses regulären Ausdrucks im Zielstring angegebenen Index. Versucht nicht, von späteren Indizes aus abzugleichen.
Rückgabewert
RegExp(pattern) gibtpattern direkt zurück, wenn alle folgenden Bedingungen zutreffen:
RegExp()wird ohnenewaufgerufen;patternist ein Regex;pattern.constructor === RegExp(meistens bedeutet dies, dass es keine Unterklasse ist);flagsistundefined.
In allen anderen Fällen erzeugt der Aufruf vonRegExp() mit oder ohnenew ein neuesRegExp-Objekt. Wennpattern ein Regex ist, ist diesource des neuen Objektspattern.source; andernfalls ist seine Quellepatternin einen String umgewandelt. Wenn derflags-Parameter nichtundefined ist, ist das neue Objektflags der Wert des Parameters; andernfalls istflags des Objektspattern.flags (fallspattern ein Regex ist).
Ausnahmen
SyntaxErrorWird in einer der folgenden Fälle ausgelöst:
patternkann nicht als gültiger regulärer Ausdruck analysiert werden.flagsenthält wiederholte Zeichen oder ein nicht erlaubtes Zeichen.
Beispiele
>Literale Notation und Konstruktor
Es gibt zwei Möglichkeiten, einRegExp-Objekt zu erstellen: eineliterale Notation und einenKonstruktor.
- Dieliterale Notation nimmt ein Muster zwischen zwei Schrägstrichen, gefolgt von optionalen Flags, nach dem zweiten Schrägstrich.
- DieKonstruierungsfunktion nimmt entweder einen String oder ein
RegExp-Objekt als ersten Parameter und einen String von optionalen Flags als zweiten Parameter.
Die folgenden drei Ausdrücke erstellen den gleichen regulären Ausdruck:
/ab+c/i;new RegExp(/ab+c/, "i"); // literal notationnew RegExp("ab+c", "i"); // constructorBevor reguläre Ausdrücke verwendet werden können, müssen sie kompiliert werden. Dieser Prozess ermöglicht es ihnen, effizienter Übereinstimmungen zu erzielen. Es gibt zwei Möglichkeiten, einRegExp-Objekt zu kompilieren und zu erhalten.
Die literale Notation führt zur Kompilierung des regulären Ausdrucks, wenn der Ausdruck ausgewertet wird. Andererseits führt der Konstruktor desRegExp-Objekts,new RegExp('ab+c'), zur Laufzeitkompilierung des regulären Ausdrucks.
Verwenden Sie einen String als das erste Argument desRegExp()-Konstruktors, wenn Sieden regulären Ausdruck aus dynamischen Eingaben erstellen möchten.
Erstellen eines regulären Ausdrucks aus dynamischen Eingaben
const breakfasts = ["bacon", "eggs", "oatmeal", "toast", "cereal"];const order = "Let me get some bacon and eggs, please";order.match(new RegExp(`\\b(${breakfasts.join("|")})\\b`, "g"));// Returns ['bacon', 'eggs']Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-regexp-constructor> |