(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]
\%{js:null-keyword}
\%{js:false-keyword} | \%{js:true-keyword}
(?>
(?: [1-9][0-9]* | 0 ) (?: \. [0-9]* )? |
\. [0-9]+
)
(?> [eE] [+-]? [0-9]+ )?
\%{js:number-start} (?= \%{_decimal} \%{js:number-end} )
\%{_decimal}
(?> [1-9][0-9]* | 0 )
\%{js:number-start} (?= \%{_decimal-integer} n \%{js:number-end} )
\%{_decimal-integer}n
(?> 0 [bB] [01]+ )
\%{js:number-start} (?= \%{_binary-integer} n? \%{js:number-end} )
\%{_binary-integer}n?
(?> 0 [oO] [0-7]+ )
\%{js:number-start} (?= \%{_octal-integer} n? \%{js:number-end} )
\%{_octal-integer}n?
(?> 0 [xX] [0-9a-fA-F]+ )
\%{js:number-start} (?= \%{_hex-integer} n? \%{js:number-end} )
\%{_hex-integer}n?
(?> 0 [0-7]+ )
\%{js:number-start} (?= \%{_legacy-octal-integer} \%{js:number-end} )
\%{_legacy-octal-integer}
\\
(?:
0 [0-7]{1,2} | # 0-padded number, not \0 (null character)
[1-3] [0-7]{0,2} | # max \377
[4-7] [0-7]{0,1}
)
\%{js:unicode-escape} |
\\
(?:
x[0-9a-fA-F]{2} | # hexadecimal escape
[^1-9xu] # single character escape
)
["']
\%{0@start}
["']
\%{0@start}
\[
]
\%{js:before-next-token}
\%{js:before-next-token}
,
\%{js:before-next-token}
\%{js:before-next-token}
\%{js:before-next-token}
\[
]
\%{js:before-next-token}
\%{js:before-next-token}
\%{js:spread-syntax}
\%{js:before-next-token}
:
\%{js:before-next-token}
\%{js:before-next-token}
\%{js:before-next-token}
(?: \%{js:get-keyword} | \%{js:set-keyword} )
(?= \%{js:optional-whitespace-or-comments} [:=(] )
\%{js:before-next-token}
(?= [\['"] ) | # computed property name, string
\%{js:number-start} (?= \.? [0-9] ) | # number
\%{js:identifier-container-start} # identifier
\%{js:before-next-token}
{
}
\%{js:before-next-token}
\%{js:before-next-token}
,
\%{js:before-next-token}
\\c[a-zA-Z]
\\ [pP] { (?: [a-zA-Z_]+ = )? [a-zA-Z0-9_]+ }
\(\? < ( \%{js:identifier} ) >
\\k < ( \%{js:identifier} ) >
\[
]
/
/([gimsuy]*)
(?<=`)
(?=`|\${)
(?<=})
(?=`|\${)
\${
}
`
`
`
`