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("\\\\");
字串字面量中的四個反斜槓在正則表示式源中代表兩個反斜槓,然後它成為單個反斜槓字面字元的字元轉義。