`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 July 2015.
Der RegExp()
Konstruktor erstellt RegExp
Objekte.
Für eine Einführung in reguläre Ausdrücke lesen Sie das Kapitel über reguläre Ausdrücke im JavaScript-Leitfaden.
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: false
Syntax
new RegExp(pattern)
new RegExp(pattern, flags)
RegExp(pattern)
RegExp(pattern, flags)
Hinweis:
RegExp()
kann mit oder ohne new
aufgerufen werden, jedoch manchmal mit unterschiedlichen Effekten. Siehe Rückgabewert.
Parameter
pattern
-
Der Text des regulären Ausdrucks. Dies kann auch ein anderes
RegExp
-Objekt sein. flags
Optional-
Wenn angegeben, ist
flags
ein String, der die hinzuzufügenden Flags enthält. Alternativ ersetzt derflags
-String alle Flags des geliefertenRegExp
-Objekts alspattern
(undlastIndex
wird auf0
zurückgesetzt).flags
kann 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 Ende jeder Zeile (durch\n
oder\r
begrenzt) abgeglichen, nicht nur der sehr Anfang oder das Ende der gesamten Eingabe. s
(dotAll)-
Erlaubt es
.
Zeilenumbrüche zu matchen. u
(unicode)-
Behandelt
pattern
als 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)
gibt pattern
direkt zurück, wenn alle folgenden Bedingungen zutreffen:
RegExp()
wird ohnenew
aufgerufen;pattern
ist ein Regex;pattern.constructor === RegExp
(meistens bedeutet dies, dass es keine Unterklasse ist);flags
istundefined
.
In allen anderen Fällen erzeugt der Aufruf von RegExp()
mit oder ohne new
ein neues RegExp
-Objekt. Wenn pattern
ein Regex ist, ist die source des neuen Objekts pattern.source
; andernfalls ist seine Quelle pattern
in einen String umgewandelt. Wenn der flags
-Parameter nicht undefined
ist, ist das neue Objekt flags
der Wert des Parameters; andernfalls ist flags
des Objekts pattern.flags
(falls pattern
ein Regex ist).
Ausnahmen
SyntaxError
-
Wird in einer der folgenden Fälle ausgelöst:
pattern
kann nicht als gültiger regulärer Ausdruck analysiert werden.flags
enthält wiederholte Zeichen oder ein nicht erlaubtes Zeichen.
Beispiele
Literale Notation und Konstruktor
Es gibt zwei Möglichkeiten, ein RegExp
-Objekt zu erstellen: eine literale Notation und einen Konstruktor.
- Die literale Notation nimmt ein Muster zwischen zwei Schrägstrichen, gefolgt von optionalen Flags, nach dem zweiten Schrägstrich.
- Die Konstruierungsfunktion 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 notation
new RegExp("ab+c", "i"); // constructor
Bevor 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, ein RegExp
-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 des RegExp
-Objekts, new RegExp('ab+c')
, zur Laufzeitkompilierung des regulären Ausdrucks.
Verwenden Sie einen String als das erste Argument des RegExp()
-Konstruktors, wenn Sie den 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 |