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

Syntax

js
new RegExp(pattern)
new RegExp(pattern, flags)
RegExp(pattern)
RegExp(pattern, flags)

Note: 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, wenn ein RegExp Objekt für das pattern bereitgestellt wird, ersetzt der flags String die Flags dieses Objekts (und lastIndex wird auf 0 zurückgesetzt).

flags kann jede Kombination der folgenden Zeichen enthalten:

d (indices)

Erzeugt Indizes für übereinstimmende Teilzeichenfolgen.

g (global)

Findet alle Übereinstimmungen, anstatt nach der ersten Übereinstimmung zu stoppen.

i (ignore case)

Beim Abgleichen werden Groß-/Kleinschreibungsunterschiede ignoriert.

m (multiline)

Behandelt Anfangs- und Endaussagen (^ und $) als über mehrere Zeilen hinweg. Mit anderen Worten, es wird der Anfang oder das Ende jeder Zeile (abgegrenzt durch \n oder \r) abgeglichen, nicht nur das absolute Anfang oder Ende der gesamten Eingabezeichenfolge.

s (dotAll)

Erlaubt, dass . auch Zeilenumbrüche abgleicht.

u (unicode)

Behandelt pattern als Folge von Unicode-Codepunkten.

v (unicodeSets)

Eine Erweiterung des u Flags, die Mengennotation in Zeichensatzklassen sowie Eigenschaften von Strings ermöglicht.

y (sticky)

Vergleicht nur ab dem durch die lastIndex-Eigenschaft dieses regulären Ausdrucks im Zielstring angegebenen Index. Versucht nicht, von späteren Indizes abzugleichen.

Rückgabewert

RegExp(pattern) gibt pattern direkt zurück, wenn alle folgenden Bedingungen erfüllt sind:

  • RegExp() wird ohne new aufgerufen;
  • pattern ist ein regulärer Ausdruck;
  • pattern.constructor === RegExp (was normalerweise bedeutet, dass es sich nicht um eine Unterklasse handelt);
  • flags ist undefined.

In allen anderen Fällen erstellt der Aufruf von RegExp() mit oder ohne new ein neues RegExp Objekt. Wenn pattern ein regulärer Ausdruck ist, ist die Quelle des neuen Objekts pattern.source; andernfalls ist die Quelle pattern, in eine Zeichenfolge umgewandelt. Wenn der flags Parameter nicht undefined ist, ist das neue Objekt flags der Wert des Parameters; andernfalls sind die flags des Objekts pattern.flags (wenn pattern ein regulärer Ausdruck ist).

Ausnahmen

SyntaxError

Wird in einem der folgenden Fälle ausgelöst:

  • pattern kann nicht als gültiger regulärer Ausdruck geparst werden.
  • flags enthält wiederholte Zeichen oder ein Zeichen außerhalb der erlaubten.

Beispiele

Literalnotation und Konstruktor

Es gibt zwei Möglichkeiten, ein RegExp Objekt zu erstellen: Eine Literalnotation und ein Konstruktor.

  • Die Literalnotation nimmt ein Muster zwischen zwei Schrägstrichen, gefolgt von optionalen Flags, nach dem zweiten Schrägstrich.
  • Die Konstruktormethode nimmt entweder einen String oder ein RegExp Objekt als ersten Parameter und einen String optionaler Flags als zweiten Parameter.

Die folgenden drei Ausdrücke erstellen denselben 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, Vergleiche effizienter auszuführen. Es gibt zwei Möglichkeiten, zu kompilieren und ein RegExp Objekt zu erhalten.

Die Literalnotation führt zur Kompilierung des regulären Ausdrucks, wenn der Ausdruck ausgewertet wird. Der Konstruktor des RegExp Objekts, new RegExp('ab+c'), führt hingegen zur Kompilierung des regulären Ausdrucks zur Laufzeit.

Verwenden Sie einen String als erstes Argument des RegExp() Konstruktors, wenn Sie den regulären Ausdruck aus dynamischen Eingaben erstellen möchten.

Einen regulären Ausdruck aus dynamischen Eingaben erstellen

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 Language Specification
# sec-regexp-constructor

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch