SyntaxError: ungültiges reguläres Ausdrucks-Flag "x"
Die JavaScript-Ausnahme "ungültiges reguläres Ausdrucks-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
. Es 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.
Nachricht
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 mehr als einmal im Ausdruck verwendet.
Die gültigen (erlaubten) Flags sind d
, g
, i
, m
, s
, u
, v
und y
. Sie werden im Detail im Reguläre Ausdrücke > Erweiterte Suche mit Flags erklärt.
Die u
- und v
-Flags schließen sich gegenseitig aus, daher können sie nicht zusammen verwendet werden. Sie können die Referenzen lesen, um die Unterschiede in ihrem Verhalten zu verstehen.
Beispiele
In einem regulären Ausdrucks-Literal, das aus einem Muster besteht, das zwischen Schrägstrichen eingeschlossen ist, werden die Flags nach dem zweiten Schrägstrich definiert. Reguläre Ausdrucks-Flags können separat oder zusammen in beliebiger Reihenfolge verwendet werden. Diese Syntax zeigt, wie die Flags mit dem regulären Ausdrucks-Literal 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 korrekte Flags verwendet.
/foo/g;
/foo/gims;
/foo/uy;
Unten ist ein Beispiel, das die Verwendung einiger ungültiger Flags b
, a
und r
zeigt:
/foo/bar;
// SyntaxError: invalid regular expression flag "b"
Der untenstehende 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 Ausdrucks-Literal interpretiert. Wahrscheinlich war beabsichtigt, ein String-Literal zu erstellen, das mit einfachen oder doppelten Anführungszeichen dargestellt wird, wie unten gezeigt:
const obj = {
url: "/docs/Web",
};