SyntaxError: invalid regular expression flag "x"
Die JavaScript-Ausnahme "invalid regular expression flag" tritt auf, wenn die Flags in einem regulären Ausdruck ein Flag enthalten, das nicht eines der folgenden ist: d
, g
, i
, m
, s
, u
, v
oder y
. Sie kann auch ausgelöst werden, wenn der Ausdruck mehr als eine Instanz eines gültigen Flags enthält oder wenn die u
und v
Flags zusammen verwendet werden.
Meldung
SyntaxError: Invalid flags supplied to RegExp constructor 'x' (V8-based) SyntaxError: Invalid regular expression flags (V8-based) SyntaxError: invalid regular expression flag x (Firefox) SyntaxError: Invalid flags supplied to RegExp constructor. (Safari) SyntaxError: Invalid regular expression: invalid flags (Safari)
Fehlertyp
Was ist schiefgelaufen?
Der reguläre Ausdruck enthält ungültige Flags oder gültige Flags wurden mehrmals im Ausdruck verwendet.
Die gültigen (erlaubten) Flags sind d
, g
, i
, m
, s
, u
, v
und y
. Sie werden detaillierter in Reguläre Ausdrücke > Erweitertes Suchen mit Flags eingeführt.
Die u
und v
Flags schließen sich gegenseitig aus und können daher nicht zusammen verwendet werden. Sie können die Referenzen lesen, um die Unterschiede in ihrem Verhalten zu verstehen.
Beispiele
In einem regulären Ausdrückliteral, das aus einem Muster besteht, das zwischen Schrägstrichen eingeschlossen ist, werden die Flags nach dem zweiten Schrägstrich definiert. Reguläre Ausdrucksflags können separat oder zusammen in beliebiger Reihenfolge verwendet werden. Diese Syntax zeigt, wie die Flags mit dem regulären Ausdrucksliteral deklariert werden:
const re = /pattern/flags;
Sie können auch in der Konstruktorfunktion des RegExp
-Objekts (zweiter Parameter) definiert werden:
const re = new RegExp("pattern", "flags");
Hier ist ein Beispiel, das nur die korrekten Flags zeigt.
/foo/g;
/foo/gims;
/foo/uy;
Unten ist ein Beispiel für die Verwendung einiger ungültiger Flags b
, a
und r
:
/foo/bar;
// SyntaxError: invalid regular expression flag "b"
Der folgende Code ist falsch, da W
, e
und b
keine gültigen Flags sind.
const obj = {
url: /docs/Web,
};
// SyntaxError: invalid regular expression flag "W"
Ein Ausdruck, der zwei Schrägstriche enthält, wird als reguläres Ausdrückliteral interpretiert. Höchstwahrscheinlich war die Absicht, ein Zeichenfolgenliteral zu erstellen, indem einfache oder doppelte Anführungszeichen wie unten gezeigt verwendet werden:
const obj = {
url: "/docs/Web",
};
Siehe auch
- Reguläre Ausdrücke Leitfaden