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
new RegExp(pattern)
new RegExp(pattern, flags)
RegExp(pattern)
RegExp(pattern, flags)
Note:
RegExp()
kann mit oder ohnenew
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 einRegExp
Objekt für daspattern
bereitgestellt wird, ersetzt derflags
String die Flags dieses Objekts (undlastIndex
wird auf0
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 ohnenew
aufgerufen;pattern
ist ein regulärer Ausdruck;pattern.constructor === RegExp
(was normalerweise bedeutet, dass es sich nicht um eine Unterklasse handelt);flags
istundefined
.
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:
/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
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