SyntaxError: \ at end of pattern

JavaScript 異常“模式末尾的 \”發生在正則表示式模式以未轉義的反斜槓 (\) 結尾時。在正則表示式字面量中,反斜槓會導致閉合斜槓 / 成為字面字元,因此這隻在使用 RegExp() 建構函式時出現。

訊息

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)

錯誤型別

SyntaxError

哪裡出錯了?

反斜槓不能字面量出現在正則表示式中。它要麼在另一個字元之前以轉義它,要麼本身被另一個反斜槓轉義。正則表示式模式末尾的反斜槓是無效的,因為它沒有轉義任何東西。

示例

雙重轉義反斜槓

此錯誤只在使用 RegExp() 建構函式時才會發生。考慮以下程式碼,它旨在匹配單個反斜槓字元

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

在 JavaScript 字串中,反斜槓也是轉義序列。因此,字串字面量 "\\" 中的兩個反斜槓被解釋為單個反斜槓。然後 RegExp() 建構函式只在正則表示式源中看到單個反斜槓字元。要解決此問題,你需要雙重轉義反斜槓

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

字串字面量中的四個反斜槓在正則表示式源中代表兩個反斜槓,然後它成為單個反斜槓字面字元的字元轉義

另見