`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

js
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 der flags-String alle Flags des gelieferten RegExp-Objekts als pattern (und lastIndex wird auf 0 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 ohne new aufgerufen;
  • pattern ist ein Regex;
  • pattern.constructor === RegExp (meistens bedeutet dies, dass es keine Unterklasse ist);
  • flags ist undefined.

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:

js
/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

js
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

Browser-Kompatibilität

Siehe auch