[1] [DFN[[CODE(MIME)@en[text/x-regexp-js]]]] は、 [[JavaScript]]/[[ECMAScript]] の[[正規表現]]を表す[[媒体型]]名です。

:[[媒体型]]名:[CODE(MIME)@en[[[text/x-regexp-js]]]]
:[[引数]]:なし

* 意味

[5] この[[媒体型]]の[[実体本体]]は、[[正規表現]][[パターン]]であり、
[[JavaScript]]/[[ECMAScript]] の [CODE(JS)@en[[[new]] [[RegExp]] ()]]
[[構築子]]の唯一の[[引数]]として指定することができる[[文字列]]です。

[6] この[[媒体型]]は [[JavaScript]] や [[ECMAScript]] の特定の版や実装と関連付けられていませんし、
版や実装を指定することもできません。

* 符号化

[3] この[[媒体型]]の[[実体]]に対しては、使用する[[プロトコル]]で [CODE(MIME)@en[[[text/[VAR[*]]]]]]
[[媒体型]]に適用可能な任意の[[内容転送符号化]]を使用して[['''構いません''']]。

[4] この[[媒体型]]で [CODE(MIME)@en[[[charset]]]] [[引数]]を使用しては[['''なりません''']]。
[[実体]]が[[オクテット列]]として転送される場合、 [[UTF-8]] で[[符号化]]しなければ[['''なりません''']]。
[[オクテット列]]として受信した[[実体]]は [[UTF-8]] として解釈しなければ[['''なりません''']]。

* 正規形

[9] この[[媒体型]]の[[正規形]]は、 [CODE(MIME)@en[[[text/plain]]]] の場合と同じです。

;; [CODE(MIME)@en[[[text/plain]]]] の[[正規形]]では、[[改行]]をすべて [[CRLF]]
で表し、それ以外に [[CR]] や [[LF]] が出現してはいけません。なお、
[[正規形]]でない[[実体]]を[[正規形]]に変換すると、その表す[[正規表現]]の意味が変わってしまうことがありますから、
注意が必要です。

* 誤り処理

[7] [[実体本体]]が[[パターン]]として不適切な[[文字列]]である場合 ([[ECMAScript]]
仕様に示された[[生成規則]]に[[一致]]しない場合や、 [[SyntaxError]]
が発生する場合) には、一般的な[[Webブラウザ]]の実装が行う[[誤り処理]]に倣う[['''べきです''']]。

;; 一般的な [[Webブラウザ]]の実装は一部の誤りからは黙って回復しますが、
[[致命的誤り]]として処理を停止する誤りもあります。

[8] [[実体]]が [[UTF-8]] [[オクテット列]]として表現されている場合、
[[サロゲート]]の[[符号位置]]が含まれているのは [[UTF-8]] に照らして誤りです。
[[ECMAScript]] 仕様は[[文字列]]を [[UTF-16]] として処理するものとして規定されていますので、
[[BMP]] 外の[[文字列]]と不正な[[サロゲート]]の[[符号位置]]が混在する場合の処理に注意が必要です。

* 歴史

[2] [CODE(MIME)@en[[[text/x-regexp-js]]]] という[[媒体型]]は2008年12月11日から [[WebHACC]]/[[Whatpm]]
で使用しています。

