SyntaxError: 模式末尾出现反斜杠
当正则表达式模式以未转义的反斜杠 (\
) 结尾时,就会出现 JavaScript 异常“\ at end of pattern”。在正则表达式字面量中,反斜杠会使结束斜杠 /
成为字面字符,因此这只能在使用 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)
错误类型
出了什么问题?
反斜杠不能在正则表达式中直接出现。它要么在另一个字符前面对其进行 转义,要么被另一个反斜杠转义。正则表达式模式末尾的反斜杠无效,因为它没有转义任何内容。
示例
双重转义反斜杠
此错误仅在使用 RegExp()
构造函数时才会发生。考虑以下代码,它旨在匹配单个反斜杠字符
js
const pattern = new RegExp("\\");
在 JavaScript 字符串中,反斜杠也是转义序列。因此,字符串字面量 "\\"
中的两个反斜杠被解释为一个反斜杠。然后,RegExp()
构造函数在正则表达式源中只看到一个反斜杠字符。要解决此问题,您需要对反斜杠进行双重转义
js
const pattern = new RegExp("\\\\");
字符串字面量中的四个反斜杠表示正则表达式源中的两个反斜杠,然后变为单个反斜杠字面字符的 字符转义。