訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
RegExpプロトタイプオブジェクトの内部プロパティ[[Prototype]]の値は、標準組み込みObjectプロトタイプオブジェクト(15.2.4)です。 RegExpプロトタイプオブジェクトは、それ自身の正規表現オブジェクトであり、その[[Class]]は、"RegExp"です。 RegExpプロトタイプオブジェクトのデータプロパティ(15.10.7)の初期値は、その名を持つ標準組み込みコンストラクタである RegExp を式 new RegExp() によって生成されたオブジェクトであるかのように設定されます。 RegExpプロトタイプオブジェクトは、その自身の valueOf プロパティは持ちませんが、ObjectプロトタイプオブジェクトからvalueOf プロパティを継承します。 次のRegExpプロトタイプオブジェクトのプロパティである関数の概要にあるフレーズ"this RegExp オブジェクト"は、当該関数の呼び出しにおける this 値である当該オブジェクトを参照します。 this 値が、オブジェクトではなかったり、内部プロパティ[[Class]]の値が、"RegExp"でないオブジェクトである場合には、TypeError例外が投げられ(スローされ)ます。
RegExp.prototype.constructor の初期値は、標準組み込みRegExpコンストラクタです。
正規表現に対するstringの正規表現のマッチを実行し、マッチした結果を含んでいるArrayオブジェクトを、stringがマッチしなければ、nullを返します。 文字列 ToString(string) は、次のような正規表現のパターンの出現において検索されます。
1. R は、 this RegExp オブジェクトとする 2. S は、 ToString(string) の値とする 3. length は、 S の長さとする 4. lastIndex は、引数"lastIndex"を伴う R の内部メソッド[[Get]]を呼んだ結果とする 5. i は、 ToInteger(lastIndex) の値とする 6. global は、引数"global"を伴う R の内部メソッド[[Get]]を呼んだ結果とする 7. global が、 false である場合、 i = 0 とする 8. matchSucceeded は、false とする 9. matchSucceeded が、false である間、繰り返す a. i < 0 または、 i > length である場合、 i.引数"lastIndex"を伴う R の内部メソッド[[Put]]を呼ぶ ii. null を返す b.引数 S と i を伴う R の内部メソッド[[Match]]を呼ぶ c. [[Match]] が、 failure を返す場合、 i. i = i+1 とする d.それ以外の場合、 i. r は、[[Match]]を呼んだ結果の State (状態)とする ii. matchSucceeded に true を設定する 10. e は、 r の endIndex 値とする 11. global が、 trueである場合、 a.引数"lastIndex"、e、true を伴う R の内部メソッド[[Put]]を呼ぶ 12. n は、r のキャプチャ配列の長さとする。(これは、 15.10.2.1 の NCapturingParens と同じ値である) 13. A は、その名を持つ標準組み込みコンストラクタである Array を式 new Array() によるかのように生成した新たな配列とする 14. matchIndex は、 i とする 15.引数 "index" 、プロパティ記述子 {[[Value]]: matchIndex, [[Writable]: true, [[Enumerable]]: true, [[Configurable]]: true}、 true を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 16.引数 "input" 、プロパティ記述子 {[[Value]]: S, [[Writable]: true, [[Enumerable]]: true, [[Configurable]]: true}、 true を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 17.引数 "length" 、プロパティ記述子 {[[Value]]: n + 1}、 true を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 18. matchedSubstr は、マッチした部分文字列とする(例えば、内包的なオフセット i と排他的なオフセット e の間の S の部分等々) 19.引数 "0" 、プロパティ記述子 {[[Value]]: matchedSubstr, [[Writable]: true, [[Enumerable]]: true, [[Configurable]]: true}、 true を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 20. i > 0 且つ、 i ≦ n のような整数 i ごとに a. captureI は、r の キャプチャ配列の i 番めの要素とする b.引数 ToString(i) 、プロパティ記述子 {[[Value]]: captureI, [[Writable]: true, [[Enumerable]]: true, [[Configurable]]: true}、 trueを伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 21. A を返す
(testは、)次のステップが取られます。
1. match は、引数として string を使用して this RegExp オブジェクト上の RegExp.prototype.exec (15.10.6.2) のアルゴリズムを評価した結果とする 2. match が、null ではない場合、true を返し、それ以外の場合、false を返す
文字列 "/" 、 this RegExp オブジェクトのソースプロパティのString値と "/" 、加えて global プロパティが trueである場合、"g"、 ignoreCase プロパティが trueである場合、"i"、 multiline プロパティが trueである場合、"m" を連結することによって形成されるString値を返します。 [注釈] 返した文字列は、 this オブジェクトとして同一の動作を伴う他の RegExp オブジェクトを評価する RegularExpressionLiteral の書式を持ちます。