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("\\\\");
字符串字面量中的四个反斜杠在正则表达式源中代表两个反斜杠,然后它成为单个反斜杠字面字符的字符转义。