SyntaxError: \ am Ende des Musters

Der JavaScript-Ausnahmefehler "\ am Ende des Musters" tritt auf, wenn ein regulärer Ausdruck mit einem nicht escapeten Backslash (\) endet. In einem Regex-Literal würde der Backslash das abschließende Schrägstrich / zu einem Literal-Zeichen machen, sodass dies nur beim Verwenden des RegExp() Konstruktors auftreten kann.

Meldung

SyntaxError: Invalid regular expression: /\/: \ at end of pattern (V8-based)
SyntaxError: \ at end of pattern (Firefox)
SyntaxError: Invalid regular expression: \ at end of pattern (Safari)

Fehlertyp

Was ist schiefgelaufen?

Ein Backslash kann nicht wörtlich in einem regulären Ausdruck erscheinen. Er geht entweder einem anderen Zeichen voraus, um es zu escapen, oder er wird selbst von einem anderen Backslash escaped. Ein Backslash am Ende eines regulären Ausdrucksmusters ist ungültig, da er nichts escapet.

Beispiele

Doppelte Escapierung von Backslashes

Dieser Fehler kann nur beim Verwenden des RegExp() Konstruktors auftreten. Betrachten Sie den folgenden Code, der versucht, ein einzelnes Backslash-Zeichen zu matchen:

js
const pattern = new RegExp("\\");

In JavaScript-Strings sind Backslashes ebenfalls Escape-Sequenzen. Daher werden die zwei Backslashes im string-Literal "\\" als einzelner Backslash interpretiert. Der RegExp() Konstruktor sieht dann nur ein einzelnes Backslash-Zeichen in der Regex-Quelle. Um dies zu beheben, müssen Sie den Backslash doppelt escapen:

js
const pattern = new RegExp("\\\\");

Die vier Backslashes im string-Literal repräsentieren zwei Backslashes in der Regex-Quelle, die dann zu einem Zeichen-Escape für ein einzelnes Backslash-Literal-Zeichen werden.

Siehe auch