在正则表达式文本中的字符类中使用/总是安全的

Is using a / within a character class in a regex literal always safe?

本文关键字:安全 正则表达式 文本 字符      更新时间:2023-09-26

在JavaScript中使用正则表达式文字时,它是由/分隔的,例如/^[a-z]$/

当在正则表达式中包含斜杠(即/^[a-z/]$/)时,一切似乎都很好——我的IDE语法高亮器以及Firefox和Chrome的JS解析器都接受它

/不需要在字符类中转义,或者只是一个开发人员友好的实现,因此不适用于所有浏览器,这是标准化的行为吗?

是的,这是由规范定义的(第25页):

RegularExpressionClass ::
[ RegularExpressionClassChars ]

RegularExpressionClassChars ::
[空]
RegularExpressionClassCharsRegularExpressionClassChar

RegularExpressionClassChar ::
RegularExpressionNonTerminator 但不是]'之一 RegularExpressionBacklashSequence

RegularExpressionNonTerminator ::
源字符 但不是 行终止符

相反,正常RegularExpressionChar定义为:

RegularExpressionChar::
RegularExpressionNonTerminator但不是'/[之一
RegularExpressionBacklashSequence
RegularExpressionClass

因此,在字符类中,您可以自由使用/,而无需转义。