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

Thi*_*ter 7 javascript regex

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

当在正则表达式中包含斜杠时,即/^[a-z/]$/一切似乎都工作正常 - 我的IDE的语法高亮显示器和Firefox和Chrome的JS解析器都接受它.

它是标准化的行为,/不需要在角色类中转义,也不仅仅是一个开发人员友好的实现,因此不适用于所有浏览器?

Joe*_*oey 11

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

RegularExpressionClass RegularExpressionClassChars::
    [ ]

RegularExpressionClassChars     [empty] RegularExpressionClassChars RegularExpressionClassChar::

    

RegularExpressionClassChar RegularExpressionNonTerminator 但不是一个RegularExpressionBackslashSequence::
     ]\     

RegularExpressionNonTerminator SourceCharacter 但不是LineTerminator::
    

相反,正常的RegularExpressionChar定义为:

RegularExpressionChar RegularExpressionNonTerminator 但不是一个RegularExpressionBackslashSequence RegularExpressionClass::
     \/[
    
    

因此,在角色类中,您可以/自由使用而无需转义.