[1] [CITE[B 互換性 (Compatibility)]] ([TIME[2002-07-19 22:24:55 +09:00]] 版) [2] >>1 に従えば \069 みたいなのは八進数のエスケープではないことになってしまいますが、 ブラウザで試してみると \06 + 文字 9 として処理されます。 [3] () が8個ないときの \8 の解釈 [[WinIE 7]]、[[Safari]]、[[Chrome]]: [CODE(char)[[[U+0038]]]] [CODE(charname)@en[[[DIGIT EIGHT]]]] [[Opera]] 9.61: [CODE(char)[[[U+0008]]]] [[Firefox]] 3: [CODE(char)[[[U+005C]]]] [CODE(charname)@en[[[REVERSE SOLIDUS]]]], [CODE(char)[[[U+0038]]]] [CODE(charname)@en[[[DIGIT EIGHT]]]] [4] [[文字列リテラル]]での \8 の解釈 どのブラウザでも [CODE(char)[[[U+0038]]]] [CODE(charname)@en[[[DIGIT EIGHT]]]] [5] [[ES3]] によれば \[VAR[d]] で [VAR[d]] が () の数より多いと [[SyntaxError]] ですが (15.10.2.9 の算法、または 15.10.2.11 の informative note)、 実際にはどのブラウザでも[[八進エスケープ]]として解釈されます。 [6] ちなみに [[Perl]] ではエラーになります。 [[ES3]] には[[正規表現]]内の () の数が、という風に書かれていて、そこより前、とは言っていません。 [[Perl]] でも、 /\5((((()))))/ のように括弧が後から出てきてもエラーにはなりません。 [7] [[文字クラス]]内の \[VAR[d]] の解釈。 [[ES3]] によれば \0 以外は [[SyntaxError]] ですが、実際にはどのブラウザでも[[エスケープ]]として解釈されます。 \1 : どのブラウザでも U+0001 として解釈されます。 \8 : [[Opera]] 以外では [CODE(char)[[[U+0038]]]] と、 [[Opera]] では [CODE(char)[[[U+0008]]]] と解釈されます。 ;; [[Firefox]] でも [CODE(char)[[[U+0038]]]] とだけみなされます。