約 2,059,531 件
https://w.atwiki.jp/xboxonescore/pages/1313.html
The Gunk 項目数:17 総ポイント:1000 難易度 実績は未ローカライズ。 本編は日本語字幕対応。 First Gunk Cleared the first gunk 50 Land the Ship Landed the Dust Bunny 50 Settle In Set up camp 50 Giant Gunk Cleared the Giant Gunk 50 Charged Up Defeated the Chager 50 Try Some Gardening Found the garden 50 Gravelands Got out of the Gravelands 100 Master Gardener Graduated and saved the day 200 Give me Five Crafted five upgrades 50 All In Crafted all upgrades 50 Sweet Fifteen Scanned fifteen objects 50 Full House Scanned every scannable type of object 50 Two Birds With One Stone Threw one on another 25 Slip One Past Clogged an unaware turret 50 Charge Off Make one charge off a cliff 50 Take Charge Make one charge into another 50 Three's a Crowd Blasted three to smithereens 25 All In 全16種。素材に余裕はほとんどないのでマメに集める必要がある。 Full House 全58個。菌類・鉱物・機械の他にガンクも戦闘中にスキャンが必要。 Three's a Crowd パワー・パルスで敵を3対倒す。パワー・パルスはスキャン51個でクラフト可能(当然素材は必要)で終盤。
https://w.atwiki.jp/three-amigos-eg/pages/8.html
@wikiにはいくつかの便利なプラグインがあります。 アーカイブ コメント ニュース 動画(Youtube) 編集履歴 関連ブログ これ以外のプラグインについては@wikiガイドをご覧ください = http //atwiki.jp/guide/
https://w.atwiki.jp/three-amigos-eg/pages/7.html
動画(youtube) @wikiのwikiモードでは #video(動画のURL) と入力することで、動画を貼り付けることが出来ます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_209_ja.html また動画のURLはYoutubeのURLをご利用ください。 =>http //www.youtube.com/ たとえば、#video(http //youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。
https://w.atwiki.jp/three-amigos-eg/pages/6.html
アーカイブ @wikiのwikiモードでは #archive_log() と入力することで、特定のウェブページを保存しておくことができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/25_171_ja.html たとえば、#archive_log()と入力すると以下のように表示されます。 保存したいURLとサイト名を入力して"アーカイブログ"をクリックしてみよう サイト名 URL
https://w.atwiki.jp/dreamer/pages/3.html
更新履歴 取得中です。
https://w.atwiki.jp/dreamer/pages/2.html
メニュー トップページ プラグイン メニュー メニュー2 @ウィキ ガイド @wiki 便利ツール @wiki 更新履歴 取得中です。
https://w.atwiki.jp/aki-lyon/pages/22.html
myModify = document.lastModified; myD = new Date(myModify); myYear = myD.getYear(); myYear4 = (myYear 2000) ? myYear+1900 myYear; myMonth = myD.getMonth() + 1; myDate = myD.getDate(); myDay = myD.getDay(); monthdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if(((myYear%4==0) (myYear%100==0))||(myYear%400==0)){ monthdays[1]=29; } switch(myDay){ case 0 myD.setDate(myD.getDate() - 6); break; case 1 myD.setDate(myD.getDate()); break; case 2 myD.setDate(myD.getDate() - 1); break; case 3 myD.setDate(myD.getDate() - 2); break; case 4 myD.setDate(myD.getDate() - 3); break; case 5 myD.setDate(myD.getDate() - 4); break; case 6 myD.setDate(myD.getDate() - 5); break; } document.write( 更新日: + myD.getFullYear() + 年 + (1 + myD.getMonth()) + 月 + myD.getDate() + 日 );
https://w.atwiki.jp/tmlibjs/pages/21.html
説明 簡単に三角形を描画できるクラス 公式ドキュメント tm.display.TriangleShape サンプル html canvas id="world" /canvas js var SCREEN_WIDTH = 320; // スクリーン幅 var SCREEN_HEIGHT = 320; // スクリーン高さ var ASSETS = { "chick" "http //jsrun.it/assets/x/X/n/k/xXnkc.png", "frame" "http //jsrun.it/assets/5/n/Y/8/5nY87.png", }; tm.main(function() { var app = [[tm.display.CanvasApp]]("#world"); app.resize(SCREEN_WIDTH, SCREEN_HEIGHT);// 画面サイズに合わせる app.fitWindow();// リサイズ対応 app.background = "rgb(0,50,0)";// 背景色をセット // 読み込みシーンを初期セット var loadingScene = tm.app.LoadingScene({ assets ASSETS, nextScene MainScene,// 次はMainScene width SCREEN_WIDTH, height SCREEN_HEIGHT }); app.replaceScene(loadingScene); // tmlib実行 app.run(); }); tm.define("MainScene", { superClass "tm.app.Scene", init function() { this.superInit(); this.player = Player(); this.addChild(this.player); this.player.setPosition(150,300); } }); tm.define("Player", { superClass "tm.display.TriangleShape", init function(){ this.superInit(); }, });
https://w.atwiki.jp/zeitvertreib/pages/63.html
ルーマン関連テキスト http //www.mt.tama.hosei.ac.jp/~atokuyas/SysA04.html 中間単位のシステム論的考察 徳安 彰(法政大学社会学部) 1.問題設定 本報告では、「中間単位 intermediary unit 」という概念を立て、その意味と社会システム論上の意義について検討する。問題の背景となるのは、機能的分化とグローバリゼーションの同時進行の中で、全体社会としての世界社会の全域で妥当する意味や価値の体系が、現実的に成立していないばかりか、理論的にも成立し得ないという状況である。結果的に生じている意味空間の多元性という現状と今後の展開をどのように捉えるか。また、そのような状況の中で生きる個人のアイデンティティはどのようなものになりうるのか。こうした問題を手がかりに中間単位の意義を考察し、最後に「多次元性 poly-contexturality 」の概念に基づいた多元主義を提案する。 2.中間単位の変容 社会学の領域では、社会の中での中規模ないしメゾレベルの単位として、伝統的に集団や組織の概念が用いられてきた。ネットワークというのはその新しい変種である。これらはいずれも、個人やミクロな相互行為とマクロな全体社会のあいだに、固有の社会的単位の存在を想定して立てられた概念である。社会システム論においても、たとえばルーマンは、対面的な相互行為と包括的な全体社会の分化の過程で、いわばその中間に組織が創発してきたという図式を立てている。 だが、従来の社会学においてはしばしば、全体社会の単位が国民社会におかれ、しかもその単位が何らかの統合性を持つと考えられてきた。たとえばパーソンズは、全体社会の統合機能を受け持つ部分を「社会共同体 societal community 」と名づけ、近代においてはネーションが社会共同体にあたるとした。もちろんパーソンズも、一方で国民社会を超えた国際機構の存在を、他方で国民社会を横断する宗教組織(例:カトリック教会)や親族組織(例:移民の親族)の存在を認めていたが、あくまで国民社会のレベルでの社会統合が第一義的であるとみなしていた。しかし概念的な問題として考えてみると、包括的な統合単位としてのネーションに対して、それをはみ出すネーション横断的な組織が存在するのは、論理的な矛盾をきたす。全体社会はもはや世界社会ただ一つしか想定することができず、したがってネーションはもはや societal com-munity ではなく、たかだか social community でしかない。ある意味で、ネーションもまた一つの中間単位になったといえる。 3.意味空間の多元化のパラドックス 機能的分化とグローバリゼーションの同時進行は、グローバルなレベルでの意味空間の多元化と中間単位の叢生をもたらし、ヒエラルキー的な統合からヘテラルキー的な並存への移行を押し進める。またこのことは、個人の一元的な社会的包摂を不可能にするとともに、アイデンティティの自由な組み替えの可能性を拓く。だがそこには、2つのパラドックスが胚胎している。 1つは普遍主義/個別主義のパラドックスである。すなわち、一方で普遍主義は、合理的な論理に基づく個人の包摂、あるいは個人の側からのコミットメントを指向する。たとえばパーソンズは、ネーションの連帯の基礎が個別主義的な宗教、民族、領域とナショナリティの一致から、普遍主義的な市民としての資格へと移行してきたという。ネーションが、国内の多様な個別性を抑圧したり消去したりすることなく、何らかの統合を達成しようとすれば、これは必然的な指向である。ハーバーマスのディスコース論は、さらにこれを抽象的に一般化したものと言えよう。だがわれわれは、純粋に合理的に何らかの中間単位にコミットすることができるであろうか。むしろ、連帯、統合、包摂、コミットメントといった現象は、何らかの感情的な(その意味で非合理的な)指向を誘発する、ある種の土着性を必要とするのではないか。そうだとすれば、その土着性は個別性につながるものであり、感情的な指向性はしばしば他の中間単位に対する排他的、敵対的な態度をともなうことになる。 もう1つのパラドックスは、アイデンティティ形成にかかわる。グローバリゼーションの進展によって、われわれはアイデンティティ形成のための材料をグローバルなストックの中から自由に選択できる可能性を獲得した。それによってアイデンティティは、生得的属性に依存しなくなると同時に、つねに偶有的なものとして脱構築/再構築を行うことが可能になる。モダニストならば、そこから普遍的・合理的な市民ないしコスモポリタンとしてのアイデンティティ形成の可能性を読みとるであろうし、ポスト・モダニストならば、そこからモザイク的ないしハイブリッド的なアイデンティティの可能性を読みとるであろう。だがここでも、感情的な指向を誘発するある種の土着性が欠如している。アイデンティティは、自由を獲得するとともに、根なし、故郷喪失に陥ってしまう。 意味空間の多元性と中間単位の叢生という現状は、このようなパラドックスによって特徴づけられている。 4.意味空間の多元性と中間単位の機能 以上のような状況をふまえると、世界社会を一元的に統合しうるような意味体系は成立しえない、と考えるべきである。現実には、ロバートソンが普遍主義の個別化と個別主義の普遍化の相互浸透と定式化したような事態が常態化し、普遍主義指向の市民的集団・組織から個別主義指向の宗教、民族、文化運動の集団/組織にいたるまで、多様な中間単位が叢生している。 これらの中間単位に関して、バーガー/ルックマンは、近代の多元主義がもたらした意味の危機に対する防衛機制としての中間制度という考え方を提示している。もちろん彼らも、かつて宗教が聖なる天蓋としての機能を果たした時代のような全体社会の統合は不可能であると考えているが、多元主義ウイルスによって意味空間が全面的な危機に陥ることを防ぐために、さまざまな中間制度が免疫システムのような機能を果たす、としている。だが、この議論をより積極的に捉えると、中間単位は意味空間の防衛的機能を果たすというよりは、新しい変異を生み出す進化的な機能を果たすとみなすことができるのではないだろうか。それは、一方で意味空間の多元性をますます増大させるが、それは意味の危機をもたらすというよりは、むしろ社会が不確実なリスクに対応する能力を高める可能性を持つといえよう。 5.多次元的な意味空間へ向けて だが、こうした中間単位の議論は、意味空間のたんなる相対主義を主張するものではない。われわれは、むしろ多次元的な多元主義を主張したい。G.ギュンターの提唱した次元および多次元性の概念に基づけば、相対主義やシンクレティズムは単一次元における意味の評価(の放棄・断念)であり、単一次元における意味の絶対評価に固執するファンダメンタリズムとは、指向性において対極にありつつも、単次元的であるという点では同類に属する。われわれの主張する多元主義は、むしろ多次元的な意味の評価を可能にする。それは、ある意味や価値の体系の単次元的な絶対評価を指向するのではなく、どんな主体がどの次元で評価をするのかを問題にする点で、ルーマンのいう2次の観察にあたる。この多次元的な多元主義によってはじめて、中間集団の進化的機能を確保することができるのである。
https://w.atwiki.jp/0x0b/pages/52.html
RegExp (正規表現) オブジェクト (RegExp (Regular Expression) Objects) RegExp オブジェクトは、正規表現と関連するフラグで構成される。 NOTE 正規表現の書式と機能は、 Perl5 プログラミング言語の正規表現を模して作られる。 パターン (Patterns) RegExp コンストラクタは、入力パターン文字列に下記の文法を適用する。文法が文字列を Pattern の 展開として解釈できなければ、エラーが発生する。 Syntax Pattern Disjunction Disjunction Alternative Alternative | Disjunction Alternative [empty] Alternative Term Term Assertion Atom Atom Quantifier Assertion ^ $ \ b \ B Quantifier QuantifierPrefix QuantifierPrefix ? QuantifierPrefix * + ? { DecimalDigits } { DecimalDigits , } { DecimalDigits , DecimalDigits } Atom PatternCharacter . \ AtomEscape CharacterClass ( Disjunction ) ( ? Disjunction ) ( ? = Disjunction ) ( ? ! Disjunction ) PatternCharacter SourceCharacter but not any of ^ $ \ . * + ? ( ) [ ] { } | AtomEscape DecimalEscape CharacterEscape CharacterClassEscape CharacterEscape ControlEscape c ControlLetter HexEscapeSequence UnicodeEscapeSequence IdentityEscape ControlEscape one of f n r t v ControlLetter one of a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z IdentityEscape SourceCharacter but not IdentifierPart DecimalEscape DecimalIntegerLiteral [lookahead ( DecimalDigit] CharacterClassEscape one of d D s S w W CharacterClass [ [lookahead ∉ {^} ] ClassRanges ] [ ^ ClassRanges ] ClassRanges [empty] NonemptyClassRanges NonemptyClassRanges ClassAtom ClassAtom NonemptyClassRangesNoDash ClassAtom - ClassAtom ClassRanges NonemptyClassRangesNoDash ClassAtom ClassAtomNoDash NonemptyClassRangesNoDash ClassAtomNoDash - ClassAtom ClassRanges ClassAtom - ClassAtomNoDash ClassAtomNoDash SourceCharacter but not one of \ ] - \ ClassEscape ClassEscape DecimalEscape b CharacterEscape CharacterClassEscape パターンの意味 (Pattern Semantics) 正規表現パターンは、下に述べる処理を用いる内部関数に変換される。実装は、同じ結果を得られるならば、下に述べるものよりもより効率のいいアルゴリズムの仕様が推奨される。 表記法 (Notation) 以下の説明では、次の変数を用いる Input は、正規表現パターンによりマッチされている文字列である。表記 input[n] は input の n 番目の文字を意味する。 n の範囲は 0 から InputLength -1 までである。 InputLength は、 Input 文字列の文字数である。 NCapturingParens は、パターン内の左捕捉括弧の数の総数 (すなわち Atom ( Disjunction ) 生成規則が展開される回数の総数) である。左捕捉括弧は、 Atom ( Disjunction ) 生成規則の ( 終端記号によりマッチされる、任意の ( パターン文字である。 IgnoreCase は、 RegExp オブジェクトの ignoreCase プロパティの設定である。 Multiline は、 RegExp オブジェクトの multiline プロパティの設定である。 さらに、以下の説明では、次の内部データ構造を用いる CharSet は、文字の数学的集合である。 State は (endIndex, captures) のペアの並びで、 endIndex を整数、 captures を NCapturingParens 値の内部配列とする。 State は、正規表現のマッチングアルゴリズムにおいて部分マッチの状態を表すのに使用される。 endIndex は、その時点でパターンにマッチする最後の入力文字のインデックス + 1 であり、 captures は捕捉括弧の結果を保持する。 captures の n 番目の要素は、捕捉括弧の n 番目の集合によって取得される値を表す文字列であり、捕捉括弧の n 番目の集合がまだ届いていないならば undefined である。バックトラッキングのため、多くの state がマッチング処理間いつでも使用されてよい。 MatchResult は、 State であるか、またはマッチに失敗したことを示す特殊トークン failure であり、どちらか一方である。 Continuation 関数は、内部クロージャ (すなわち、引数が既に値に結合されている内部関数) であり、 1 個の引数 State をとり結果 MatchResult を返す。内部クロージャが、そのクロージャを生成する関数に結合された変数を参照するならば、クロージャが使用するのはクロージャが生成されたときにそれらの変数が持っていた値である。 continuation は、引数 State で与えられる中間状態で開始して、入力文字列に対するパターンの残りの部分 (クロージャの結合済み引数で特定される) にマッチを試みる。マッチに成功したならば、 continuation はそれに達した最後の State を返す; match に失敗ならば、 continuation は failure を返す。 Matcher 関数は、 2 個の引数 -- State と Continuation -- をとる内部クロージャで、結果 MutchResult を返す。 matcher は、引数 State で与えられる中間状態から開始して、入力文字列に対してパターンの中央の部分パターン (クロージャの結合済み引数で特定される) にマッチを試みる。引数 Continuation は、パターンの残りにマッチさせるクロージャでなければならない。新しい State を得るためのパターンの部分パターンのマッチングの後、 matcher はその状態の上に Cantinuation を呼出し、パターンの残りがうまくマッチできるかテストする。マッチできるならば matcher は continuation に返された状態を返す; できないならば matcher は、成功するか、または全ての可能性をつかい尽くすまで、 Continuation を繰返し呼出し、その選択点で異なる選択を試してよい。 AssertionTester 関数は、引数 State をとる内部クロージャで、結果 boolean を返す。 assertion テスターは、入力文字列の現在の位置に対する特殊条件 (クロージャの結合済み引数で特定される) をテストし、条件にマッチすれば true 、マッチしなければ false を返す。 EscapeValue は、文字または整数である。 EscapeValue を用いて DecimalEscape エスケープシーケンスの解釈をあらわす 文字 ch は、エスケープシーケンスが文字 ch として解釈されることを意味し、一方整数 n は、エスケープシーケンスが n 番目の捕捉括弧集合の後方参照として解釈されることを意味する。 Pattern 生成規則 Pattern Disjunction は、次のように評価される Disjunction を評価し、 Matcher m を取得する。 内部クロージャを返す。これは 2 個の引数、文字列 str と整数 index をとり、次を実行する Input を与えられた文字列 str とする。この変数は、セクション 15.10.2 内の関数を通して使用される。 InputLength を Input の長さとする。この変数は、セクション 15.10.2 内の関数を通して使用される。 c を、成功の MatchResult として引数 State を常に返す Continuation とする。 cap を、 1 から NCapturingParens までの添え字を持つ NCapturingParens 個の undefined 値 の内部配列とする。 x を State (index, cap) とする。 m(x, c) を呼出し、その結果を返す。 参考情報解説 (Informative comment) Pattern は内部関数値に評価 ("コンパイル") される。 RegExp.prototype.exec がこの関数を適用できるのは、文字列と、文字列内部のオフセットで、それは文字列内部のその厳密なオフセットで開始してパターンがマッチできるかどうかを決定するものである。 そして、マッチするならば、それは捕捉括弧の値となるものである。 セクション 15.10.2 のアルゴリズムは、コンパイルするパターンが例外 SyntaxError を投げてもよいように設計される; 一方、パターンが一旦コンパイルされると、文字列内のマッチを検索する結果の関数の適用は、例外を投げることが出来ない (out-of-memory など、どこでも発生しうる任意のホスト定義の例外を除く)。 Disjunction 生成規則 Disjunction Alternative の評価は、 Alternative を評価して取得した Matcher を返す。 生成規則 Disjunction Alternative | Disjunction は、次のように評価される Alternative を評価し Matcher m1 を取得する。 Disjunction を評価し Matcher m2 を取得する。 内部 Matcher クロージャを返す。これは 2 個の引数、 State x と Cantinuation x をとり、次を実行する m1(x, c) を呼出し、結果を r とする。 r が failure でないならば、 r を返す。 m2(x, c) を呼出し、その結果を返す。 参考情報解説 正規表現演算子 | は 2 個の代替を区切る。パターンはまず左の Alternative (後に正規表現が続く) のマッチを試行する; 失敗したならば、右の Disjunction (後に正規表現が続く) のマッチを試行する。左の Alternative, 右の Disjunction, 続き全てが選択点を持つならば、続きの全ての選択肢は左の Alternative 内の次の選択肢上への移動前に試行される。左の Alternative 内の選択肢を使い切ったならば、右の Disjunction が左の Alternative の代わりに試行される。 | によりスキップされたパターン成分内部の任意の捕捉括弧は、文字列の代わりに undefined 値を生成する。つまり、例えば /a|ab/.exec("abc") は結果 "a" を返し、 "ab" は返さない。もっと言えば /((a)|(ab))((c)|(bc))/.exec("abc") は以下の配列 ["abc", "a", "a", undefined, "bc", undefined, "bc"] を返し、 ["abc", "ab", undefined, "ab", "c", "c", undefined] は返さない。 Alternative 生成規則 Alternative [empty] の評価は、Matcher を返す。この Matcher は 2 個の引数 State x と Continuation c をとり、 c(x) の結果を返す。 生成規則 Alternative Alternative Term は、次のように評価される Alternative を評価し、 Matcher m1 を得る。 Term を評価し、 Matcher m2 を得る。 内部 Matcher クロージャを返す。このクロージャは 2 個の引数 State x と Continuation c をとり、次のように振舞う Continuation d を生成する。これは State 引数に y をとり m2(y, c) の結果を返す m1(x, d) を呼出し、その結果を返す。 参考情報解説 連続する Term は、入力文字列の連続する部分の同時マッチを試みる。 左の Alternative, 右の Term, 続きの正規表現の全てが選択ポイントを持つならば、 結果の全選択肢が右の Term の次の選択肢に移動する前に検査され、 右の Term の全ての選択肢が左の Alternative の次の選択肢に移動する前に検査される。 Term 生成規則 Term Assertion の評価は 2 個の引数 State x と a Continuation c を取る内部 Matcher クロージャ を返す。このクロージャは次を実行する Assertion を評価し、 AssertionTester t を取得する。 t(x) を呼び出し、結果の boolean 値を r とする。 r が false ならば、 failure を返す。 c(x) を呼び出し、その結果を返す。 生成規則 Term Atom の評価は、 Atom を評価して Matcher を取得し、その Matcher を返す。 生成規則 Term Atom Quantifier は、次のように評価される Atom を評価し、 Matcher m を取得する。 Quantifier を評価し、 3 つの結果 整数 min, 整数 (または ∞) max, boolean 値 greedy を取得する。 max が有限数で min 未満ならば、例外 SyntaxError を投げる。 parenIndex を、正規表現全体でこの生成規則展開の Term の左に発生する左捕捉括弧の数とする。 これは、この生成規則の Term に先行する Atom ( Disjunction ) 生成規則の展開総数に、この Term を閉じている Atom ( Disjunction ) 生成規則の総数を加えた数である。 parenCount を この生成規則の Atom 展開内の左捕捉括弧の数とする。これは、この生成規則の Atom に閉じられる Atom ( Disjunction ) 生成規則の総数である。 内部 Matcher クロージャを返す。このクロージャは 2 個の引数 State x と a Continuation c をとり、次のように振舞う RepeatMatcher(m, min, max, greedy, x, c, parenIndex, parenCount) を呼び出し、その結果を返す。 内部補助関数 RepeatMatcher は 8 個のパラメタ Matcher m, 整数 min, 整数 (or ∞) max, boolean 値 greedy, State x, Continuation c, 整数 parenIndex, 整数 parenCount, を取る。そして次のように振舞う max が zero ならば、 c(x) を呼出しその結果を返す。 内部 Continuation クロージャ d を生成する。このクロージャは 1 個の引数 State y をとり、次のように振舞う 1. min が zero であり、かつ y の endIndex が x の endIndex と等しいならば、 failure を返す。 2. min が zero ならば、min2 を zero とする; そうでなければ min2 を min-1 とする。 3. max が ∞ ならば、max2 を ∞ とする; そうでなければ max2 を max-1 とする。 4. RepeatMatcher(m, min2, max2, greedy, y, c, parenIndex, parenCount) を呼出し、その結果を返す。 cap を x の captures 内部配列の fresh copy とする。 parenIndex k かつ k ≤ parenIndex+parenCount を満たす整数 k のそれぞれについて、 cap[k] を undefined に設定する。 e を x の endIndex とする。 xr を State (e, cap) とする。 min が 0 以外ならば、 m(xr, d) を呼出し、その結果を返す。 greedy が true ならば、ステップ 12 へ。 c(x) を呼出し、 z をその結果とする。 z が failure でないならば、 z を返す。 m(xr, d) を呼出し、その結果を返す。 m(xr, d) を呼出し、 z をその結果とする。 z が failure でないならば、 z を返す。 c(x) を呼出し、その結果を返す。 参考情報解説 Quantifier の続く Atom は、 Quantifier で指定された回数だけ繰り返される。量指定子は貪欲でなくすることもできる。その場合、更なる後続のマッチを行ううえで Atom パターンの繰返し回数は可能な限り少ない。また貪欲にすることもできる。その場合、 Atom パターンは後続のマッチに可能な限り多くの回数繰り返される。マッチを行う入力文字列よりもむしろ Atom パターンが繰り返され、したがって Atom の異なる反復は、異なる入力部分文字列とマッチできる。 Atom と続きの正規表現がすべて選択点を持つ場合、 Atom はまず可能な限り多く(最短マッチでは少なく) のマッチを行う。続きの全選択肢は、最後の Atom 反復中での次の選択肢上に移動する前に、試行される。最後 (n 番目) の Atom 反復の全選択肢は、最後から一つ前 (n-1 番目) の Atom 反復中での次の選択肢上に移動する前に、試行される; その時点で、より多くの、またはより少ない Atom の反復が今度は可能であることが判明するかもしれない; (n-1) 番目の Atom の反復の中の次の選択肢上に移動する前に、(可能な限り少なく、または可能な限り多くのいずれかで再開し)、使い尽くされる。 /a[a-z]{2,4}/.exec("abcdefghi") が "abcde" を返すことに較べて、 /a[a-z]{2,4}?/.exec("abcdefghi") は "abc" を返す。 また、 /(aa|aabaac|ba|b|c)*/.exec("aabaac") 上の順の選択点による正規表現は ["aaba", "ba"] という配列を返し、 ["aabaac", "aabaac"] ["aabaac", "c"] とはならない。 上記の選択点の順序は、2 数の最大公約数(単項表記で表す)を算出する正規表現の記述にも使用できる。次の例は、10 と 15 の最大公約数を算出する "aaaaaaaaaa,aaaaaaaaaaaaaaa".replace(/^(a+)\1*,\1+$/,"$1") これは単項表記の最大公約数 "aaaaa" を返す。 ステップ 4 の RepeatMatcher は、 Atom が繰り返されるたびに Atom の captures をクリアする。 これは次の正規表現の振る舞いに見ることができる /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac") これは次の配列を返し ["zaacbbbcac", "z", "ac", "a", undefined, "c"] 次のようなものではない。 ["zaacbbbcac", "z", "ac", "a", "bbb", "c"] 最も外側の * の各反復が、この場合 2 番目, 3 番目, 4 番目である捕捉文字列を含む、数量化された Atom に含まれていた全ての捕捉された文字列をクリアするためである。 ステップ 1 の RepeatMatcher のクロージャ d は、一旦最小反復数が満たされたらそれ以上空文字列にマッチする Atom の展開を更に反復するために考えないことを宣言する。これは正規表現エンジンがパターンの無限ループに陥ることを防いでおり、次のような正規表現は /(a*)*/.exec("b") また若干複雑には次のようなものは /(a*)b\1+/.exec("baaaac") これらは次の配列を返す ["b", ""] Assertion 生成規則 Assertion ^ の評価は、内部 AssertionTester クロージャを返す。これは引数に State x を取り、次を実行する e を x の endIndex とする。 e が 0 ならば、 true を返す。 Multiline が false ならば、 false を返す。 文字 Input[e-1] が行終端文字 LF , CR , LS , PS のうちの一つならば、 true を返す。 false を返す。 生成規則 Assertion $ の評価は、内部 AssertionTester クロージャを返す。これは引数に State x を取り、次を実行する e を x の endIndex とする。 e が InputLength と等しいならば、 true を返す。 multiline が false ならば、 false を返す。 文字 Input[e] が行終端文字 LF , CR , LS , PS のうちの一つならば、 true を返す。 false を返す。 生成規則 Assertion \ b の評価は、内部 AssertionTester クロージャを返す。これは引数に State x を取り、次を実行する e を x の endIndex とする。 IsWordChar(e-1) を呼び出し、結果の boolean 値を a とする。 IsWordChar(e) を呼び出し、結果の boolean 値を b とする。 a が true かつ b が false ならば、 true を返す。 a が false かつ b が true ならば、 true を返す。 false を返す。 生成規則 Assertion \ B の評価は、内部 AssertionTester クロージャを返す。これは引数に State x を取り、次を実行する e を x の endIndex とする。 IsWordChar(e-1) を呼び出し、結果の boolean 値を a とする。 IsWordChar(e) を呼び出し、結果の boolean 値を b とする。 a が true かつ b が false ならば、 false を返す。 a が false かつ b が true ならば、 false を返す。 true を返す。 内部補助関数 IsWordChar は整数パラメータ e をとり、次を実行する e == -1 または e == InputLength ならば、 false を返す。 c を文字 Input[e] とする。 c が下表の 63 文字のうちの一つならば、 true を返す。 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ false を返す。 Quantifier 生成規則 Quantifier QuantifierPrefix は、次のように評価される QuantifierPrefix を評価し、 2 個の結果 整数 min と整数 (または ∞) max を取得する。 3 個の結果 min, max, true を返す。 生成規則 Quantifier QuantifierPrefix ? は、次のように評価される QuantifierPrefix を評価し、 2 個の結果 整数 min と整数 (または ∞) max を取得する。 3 個の結果 min, max, false を返す。 生成規則 QuantifierPrefix * の評価は、 2 個の結果 0 と ∞ を返す。 生成規則 QuantifierPrefix + の評価は、 2 個の結果 1 と ∞ を返す。 生成規則 QuantifierPrefix ? の評価は、 2 個の結果 0 と 1 を返す。 生成規則 QuantifierPrefix { DecimalDigits } は、次のように評価される i を DecimalDigits の数学値とする(セクション 7.8.3 参照)。 2 個の結果 i と i を返す。 生成規則 QuantifierPrefix { DecimalDigits , } は、次のように評価される i を DecimalDigits の数学値とする。 2 個の結果 i と ∞ を返す。 生成規則 QuantifierPrefix { DecimalDigits , DecimalDigits } は、次のように評価される i を 1 個目の DecimalDigits の数学値とする。 j を 2 個目の DecimalDigits の数学値とする。 2 個の結果 i と j を返す。 Atom 生成規則 Atom PatternCharacter は、次のように評価される ch を PatternCharacter で表される文字とする。 A を文字 ch を含む 1 要素 CharSet とする。 CharacterSetMatcher(A, false) を呼出し、結果の Matcher を返す。 生成規則 Atom . は、次のように評価される A を 4 個の行終端文字 LF , CR , LS , PS を除く全て文字の集合とする。 CharacterSetMatcher(A, false) を呼び出し、その結果の Matcher を返す。 生成規則 Atom \ AtomEscape の評価は、 AtomEscape を評価して Matcher を取得し、その Matcher を返す。 生成規則 Atom CharacterClass は、次のように評価される CharacterClass を評価し、 CharSet A と boolean 値 invert を取得する。 CharacterSetMatcher(A, invert) を呼び出し、その結果の Matcher を返す。 生成規則 Atom ( Disjunction ) は、次のように評価される Disjunction を評価し、 Matcher m を取得する。 parenIndex を、正規表現全体において、この生成規則展開の最初の左括弧の左側に発生する左捕捉括弧の数とする。これは、この生成規則の Atom に先行する Atom ( Disjunction ) 生成規則の展開総数に、この Atom を閉じている Atom ( Disjunction ) 生成規則の総数を加えたものである。 内部 Matcher クロージャを返す。このクロージャは 2 個の引数 State x and a Continuation c をとり、次のように振舞う 内部 Continuation クロージャ d を作成する。このクロージャは 1 個の引数 State y をとり、次のように振舞う cap を y の captures 内部配列の初期の複製 (fresh copy) とする。 xe を x の endIndex とする。 ye を y の endIndex とする。 s を、 Input の 位置 xe から ye の直前までの文字を持つ fresh string とする。 cap[parenIndex+1] を s に設定する。 z を State (ye, cap) とする。 c(z) を呼出し、その結果を返す。 m(x, d) を呼出し、その結果を返す。 生成規則 Atom ( ? Disjunction ) の評価は、 Disjunction を評価して Matcher を取得し、その Matcher を返す。 生成規則 Atom ( ? = Disjunction ) は、次のように評価される Disjunction を評価して Matcher m を取得する。 内部 Matcher クロージャを返す。そのクロージャは 2 個の引数 State x と Continuation c をとり、次のように振舞う d を、成功する MatchResult としてその State 引数を常に返す Continuation とする。 m(x, d) を呼出し、 r をその結果とする。 r が failure ならば、 failure を返す。 y を r の State とする。 cap を y の captures 内部配列とする。 xe を x の endIndex とする。 z を State (xe, cap) とする。 c(z) を呼出し、その結果を返す。 生成規則 Atom ( ? ! Disjunction ) は、次のように評価される Disjunction を評価して Matcher m を取得する。 内部 Matcher クロージャを返す。そのクロージャは 2 個の引数 State x と Continuation c をとり、次のように振舞う d を、成功する MatchResult としてその State 引数を常に返す Continuation とする。 m(x, d) を呼出し、 r をその結果とする。 r が failure でないならば、 failure を返す。 c(x) を呼出し、その結果を返す。 内部補助関数 CharacterSetMatcher は 2 個の引数 CharSet A と boolean フラグ invert をとり、次のように振舞う 内部 Matcher クロージャを返す。そのクロージャは 2 個の引数 State x と Continuation c をとり、次のように振舞う e を x の endIndex とする。 e == InputLength ならば、 failure を返す。 c を 文字 Input[e] とする。 cc を Canonicalize(c) の結果とする。 invert が true ならば、 ステップ 8 へ。 集合 A に、 Canonicalize(a) == cc であるような元が存在しないならば、 failure を返す。 ステップ 9 へ。 集合 A に、 Canonicalize(a) == cc であるような元が存在するならば、 failure を返す。 cap を x の captures 内部配列とする。 y を State (e+1, cap) とする。 c(y) を呼出し、その結果を返す。 内部補助関数 Canonicalize はパラメタに文字 ch をとり、次のように振舞う IgnoreCase が false ならば、 ch を返す。 u を ch を大文字に変換したものとする。これは文字列 ch に String.prototype.toUpperCase を呼出すのと同様のものである。 u が単一の文字により構成されるものでないならば、 ch を返す。 cu を u の文字とする。 ch のコードポイント値が 10 進数で 128 以上であり、かつ cu のコードポイント値が 10 進数で 128 未満ならば、 ch を返す。 cu を返す。 参考情報解説 ( Disjunction ) 形式の括弧は、 Disjunction パターンのグループ成分とともに、マッチ結果の保存を提示する。結果は後方参照 (\ に 0 以外の10進数が続くもの)、置換文字列内での参照に用いられ、また正規表現マッチ関数から配列の一部を返される。括弧の捕捉の振る舞いの抑制には、代わりに (? Disjunction ) 形式を用いる。 (?= Disjunction ) 形式は、 0 文字幅の肯定の先読みを指定する。成功するためには Disjunction 内部のパターンは現在位置においてマッチしなければならないが、後続のマッチングの前に現在位置は前進しない。 Disjunction が現在位置におけるマッチに何通りかある場合は、最初のものだけが検査される。他の正規表現演算子とは異なり、 (?= 形式内への後方参照は存在しない (この独特の振る舞いは Perl から継承される)。 Disjunction が捕捉括弧とその捕捉への後方参照を含む後続のパターンで構成されるとき、このことが重要になる。 例えば、 /(?=(a+))/.exec("baaabac") は、 1 個目の b の直後の空文字列にマッチし、それゆえ次の配列を返す ["", "aaa"] 先読みへ後方参照の不足の例として、次を考えてみる /(?=(a+))a*b\1/.exec("baaabac") この式が返すのは次であり ["aba", "a"] 次のようにはならない ["aaaba", "a"] (?= Disjunction ) 形式は、 0 文字幅の否定の先読みを指定する。成功するためには Disjunction 内部のパターンは現在位置においてマッチに失敗しなければならない。現在位置は後続のマッチングの前に前進しない。 Disjunction には捕捉括弧を含められるが、それらへの後方参照は Disjunction 自身内部からの場合ものみ意味を持つ。パターン内の他の場所からのこれらの捕捉括弧への後方参照は、パターンに否定の先読みが成功してはならないため、常に undefined を返す。例えば /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac") は、ある正の数 n 個の a, 1 個の b, 他の n 個の (1 個目の \2 で指定される) a, 1 個の c, が直後に続かないような 1 個の a を検索する。 2 個目の \2 は否定の先読みの外部であり、したがって undefined に対してマッチするので常に成功する。式全体は次の配列を返す ["baaabaac", "ba", undefined, "abaac"] 文字ケースを区別しないマッチでは、全ての文字は比較の直前に暗黙に大文字に変換される。しかし、大文字への変換が 1 個以上の文字に展開される場合("ß" (\u00DF) から "SS" に変換など)は、代わりに文字はそのまま残される。 ASCII 文字でなくても、大文字への変換がその文字を ASCII 文字にする場合、その文字は残される。これは /[a-z]/i のような ASCII 文字のマッチのみを意図した正規表現のマッチから、\u0131 \u017F のような Unicode 文字を遮る。なお、これらの変換が許可される場合、 /[^\W]/i は a, b, ..., h, にはマッチするが i や s にはマッチしない。 AtomEscape 生成規則 AtomEscape DecimalEscape は、次のように評価される DecimalEscape を評価して EscapeValue E を取得する。 E が文字でなければ、ステップ 6 へ。 ch を E の文字とする。 A を文字 ch を含む要素1個の CharSet とする。 CharacterSetMatcher(A, false) を呼出し、結果の Matcher を返す。 E は整数でなければならない。 n をその整数とする。 n=0 または n NCapturingParens ならば、例外 SyntaxError を投げる。 内部 Matcher クロージャを返す。このクロージャは 2 個の引数、 State x と Continuation c をとり、次のように振舞う cap を x の captures の内部配列とする。 s を cap[n] とする。 s が undefined ならば、 c(x) を呼出し、その結果を返す。 e を x の endIndex とする。 len を s の length とする。 f を e+len とする。 f InputLength ならば、 failure を返す。 Canonicalize(s[i]) が Canonicalize(Input [e+i]) と同じ文字でないような 0 以上 len 未満の整数 i が存在するならば、 failure を返す。 y を State (f, cap) とする。 c(y) を呼出し、その結果を返す。 生成規則 AtomEscape CharacterEscape は、次のように評価される CharacterEscape を評価し、文字 ch を取得する。 A を文字 ch を含む要素1個の CharSet とする。 CharacterSetMatcher(A, false) を呼出し、結果の Matcher を返す。 生成規則 AtomEscape CharacterClassEscape は、次のように評価される CharacterClassEscape を評価し、 CharSet A を取得する。 CharacterSetMatcher(A, false) を呼出し、結果の Matcher を返す。 参考情報解説 \ に 0 以外の10進数 n の続く形式のエスケープシーケンスは、捕捉括弧の n 番目の集合 (セクション 15.10.2.11) の結果にマッチする。正規表現中の捕捉括弧が n 個未満である場合はエラーである。正規表現が n 個以上の捕捉括弧を持つが n 番目が何も捕捉されず undefined である場合、その後方参照は常に成功する。 CharacterEscape 生成規則 CharacterEscape ControlEscape の評価は、下の表に従って文字を返す ControlEscapeUnicode ValueNameSymbol t\u0009horizontal tab HT n\u000Aline feed (new line) LF v\u000Bvertical tab VT f\u000Cform feed FF r\u000Dcarriage return CR 生成規則 CharacterEscape c ControlLetter は、次のように評価される ch を ControlLetter で表される文字とする。 i を ch のコードポイント値とする。 j を i を 32 で割った余りとする。 j を番号とする Unicode 文字を返す。 生成規則 CharacterEscape HexEscapeSequence の評価は、 HexEscapeSequence の文字値 (セクション 7.8.4) を評価して、結果の文字を返す。 生成規則 CharacterEscape UnicodeEscapeSequence の評価は、 UnicodeEscapeSequence の文字値 (セクション 7.8.4) を評価して、結果の文字を返す。 生成規則 CharacterEscape IdentityEscape の評価は、 IdentityEscape で表される文字を返す。 DecimalEscape 生成規則 DecimalEscape DecimalIntegerLiteral [lookahead ∉ DecimalDigit] は、次のように評価される。 i を DecimalIntegerLiteral の数学値とする。 i が 0 ならば、 NUL 文字 (Unicode 値 0000) を構成する EscapeValue を返す。 整数 i で構成する EscapeValue を返す。 "DecimalIntegerLiteral の数学値" の定義はセクション 7.8.3 である。 参考情報解説 最初の数字が0以外である10進数 n が \ に続く場合、そのエスケープシーケンスは後方参照として考える。正規表現全体の左捕捉括弧の総数よりも n が大きい場合はエラーである。 \0 は NUL 文字を表し、10進数字を後に続けることはできない。 CharacterClassEscape 生成規則 CharacterClassEscape d の評価は、0 から 9 までを含む文字の 10 個の要素集合を返す。 生成規則 CharacterClassEscape D の評価は、 CharacterClassEscape d が返す集合を除く全ての文字の集合を返す。 生成規則 CharacterClassEscape s の評価は、 WhiteSpace (セクション 7.2) または LineTerminator (セクション 7.3) 生成規則の右辺上の文字を含む文字集合を返す。 生成規則 CharacterClassEscape S の評価は、 CharacterClassEscape s が返す集合を除く全ての文字集合を返す。 生成規則 CharacterClassEscape w の評価は、 63 個の文字を含む文字の集合を返す a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ 生成規則 CharacterClassEscape W の評価は、 CharacterClassEscape w が返す集合を除く全ての文字集合を返す。 CharacterClass 生成規則 CharacterClass [ [lookahead ∉ {^}] ClassRanges ] の評価は、 ClassRanges を評価して CharSet を取得し、その CharSet とブーリアン値 false を返す。 生成規則 CharacterClass [ ^ ClassRanges ] の評価は、 ClassRanges を評価して CharSet を取得し、その CharSet とブーリアン値 true を返す。 ClassRanges 生成規則 ClassRanges [empty] の評価は、空の CharSet を返す。 生成規則 ClassRanges NonemptyClassRanges の評価は、 NonemptyClassRanges を評価して CharSet を取得し、その CharSet を返す。 NonemptyClassRanges 生成規則 NonemptyClassRanges ClassAtom の評価は、 ClassAtom を評価して CharSet を取得し、その CharSet を返す。 生成規則 NonemptyClassRanges ClassAtom NonemptyClassRangesNoDash は、次のように評価される ClassAtom を評価し、 CharSet A を取得する。 NonemptyClassRangesNoDash を評価し、 CharSet B を取得する。 CharSet A と B の和集合を返す。 生成規則 NonemptyClassRanges ClassAtom - ClassAtom ClassRanges は、次のように評価される 1 つ目の ClassAtom を評価し CharSet A を取得する。 2 つ目の ClassAtom を評価し CharSet B を取得する。 ClassRanges を評価し CharSet C を取得する。 CharacterRange(A, B) を呼出し、D を結果の CharSet とする。 CharSet D と C の和集合を返す。 内部補助関数 CharacterRange は、 2 個の CharSet パラメータ A と B をとり、次を実行する A が厳密な 1 個の文字を含まない、または B が厳密な 1 個の文字を含まないならば、例外 SyntaxError を投げる。 a を、 CharSet A 内の 1 個の文字とする。 b を、 CharSet B 内の 1 個の文字とする。 i を、文字 a のコードポイント値とする。 j を、文字 b のコードポイント値とする。 i j ならば、例外 SyntaxError を投げる。 i から j までの番号をもつ文字全てを含む集合を返す。 NonemptyClassRangesNoDash 生成規則 NonemptyClassRangesNoDash ClassAtom 評価は、 ClassAtom 評価で CharSet を取得し、その CharSet を返す。 生成規則 NonemptyClassRangesNoDash ClassAtomNoDash NonemptyClassRangesNoDash は、次のように評価される ClassAtomNoDash を評価し、 CharSet A を取得する。 NonemptyClassRangesNoDash を評価し、 CharSet B を取得する。 CharSets A と B の和集合を返す。 生成規則 NonemptyClassRangesNoDash ClassAtomNoDash - ClassAtom ClassRanges は、次のように評価される ClassAtomNoDash を評価し、 CharSet A を取得する。 ClassAtom を評価し、 CharSet B を取得する。 ClassRanges を評価し、 CharSet C を取得する。 CharacterRange(A, B) を呼出し、 D を結果の CharSet とする。 CharSet D と C の和集合を返す。 参考情報解説 ClassRanges は、単一の ClassAtom そして/または ダッシュで区切られた 2 個の ClassAtom の範囲に展開してよい。文字ケースについては、 ClassRanges は 1 つ目の ClassAtom と 2 つ目の ClassAtom までの間の全ての文字を含む。 ClassAtom が単一の文字を表さない (例えば、一方が \w) ならば、また 1 つ目の ClassAtom のコードポイント値が 2 つ目の ClassAtom のコードポイント値より大きいならば、エラーが発生する。 パターンが文字ケースを区別しないとしても、範囲の両端の文字ケースは、文字の範囲への所属判定において重要である。たとえば、パターン /[E-F]/i は文字 E, F, e, f にのみマッチするのに対して、パターン /[E-f]/i は大文字小文字含めた ASCII 文字だけでなく記号 [, \, ], ^, _, ` にもマッチする。 文字 - は文字通りに扱われうるか、範囲を示せるかである。 - が文字通りに扱われるのは、それが ClassRanges の最初または最後の文字である場合、範囲指定の先頭または末尾である場合、直後に範囲指定が続く場合である。 ClassAtom 生成規則 ClassAtom - の評価は、 1 個の文字 - で構成される CharSet を返す。 生成規則 ClassAtom ClassAtomNoDash の評価は、 ClassAtomNoDash 評価で CharSet を取得し、その CharSet を返す。 ClassAtomNoDash 生成規則 ClassAtomNoDash SourceCharacter but not one of \ ] - の評価は、 SourceCharacter で表される文字で構成される 1 要素の CharSet を返す。 生成規則 ClassAtomNoDash \ ClassEscape の評価は、 ClassEscape 評価で CharSet を取得し、その CharSet を返す。 ClassEscape 生成規則 ClassEscape DecimalEscape は、次のように評価される DecimalEscape を評価し、 EscapeValue E を取得する。 E が文字でなければ、 例外 SyntaxError を投げる。 ch を E の文字とする。 文字 ch で構成される、 1 要素の CharSet を返す。 生成規則 ClassEscape b は、 1 個の文字 BS (Unicode 値 0008) で構成される CharSetを返して評価される。 生成規則 ClassEscape CharacterEscape の評価は、 CharacterEscape 評価で文字を取得し、その文字で構成される 1 要素の CharSet を返す。 生成規則 ClassEscape CharacterClassEscape の評価は、 CharacterClassEscape 評価で CharSet を取得し、その CharSet を返す。 参考情報解説 ClassAtom は、 \b, \B, 後方参照を除く残りの正規表現で許される任意のエスケープシーケンスを使用できる。 CharacterClass 内部において、 \b は後退文字 (backspace character) を意味し、一方 \B と後方参照はエラーを発生させる。 ClassAtom 内部での後方参照の使用はエラーを引き起こす。 15.10.3 関数として呼出される RegExp コンストラクタ (The RegExp Constructor Called as a Function) RegExp(pattern, flags) pattern が [[Class]] プロパティが "RegExp" であるオブジェクト R で、かつ flags が undefined ならば、 R をそのまま返す。そうでなければ RegExp コンストラクタ (セクション 15.10.4.1) を呼出し、それに引数 pattern と flags を渡し、そのコンストラクタに構築されるオブジェクトを返す。 15.10.4 RegExp コンストラクタ (The RegExp Constructor) RegExp が new 式の一部として呼出されるとき、それはコンストラクタである それは、新たに生成されるオブジェクトを初期化する。 new RegExp(pattern, flags) pattern が [[Class]] プロパティが "RegExp" である オブジェクト R で、かつ flags が undefined ならば、 P を R の構築に用いる pattern とし、 F を R の構築に用いる flags とする。 pattern が [[Class]] プロパティが "RegExp" である オブジェクト R で、かつ flags が undefined でないならば、 例外 TypeError を投げる。 そうでなければ、 P を pattern が undefined ならば空文字列、そうでなければ ToString(pattern) とし、 F を flags が undefined ならば空文字列、そうでなければ ToString(flags) とする。 新規に構築されたオブジェクトの global プロパティは、 F が文字 "g" を含めば true, そうでなければ false である Boolean 値に設定される。 新規に構築されたオブジェクトの ignoreCase プロパティは、 F が文字 "i" を含めば true, そうでなければ false である Boolean 値に設定される。 新規に構築されたオブジェクトの multiline プロパティは、 F が文字 "m" を含めば true, そうでなければ false である Boolean 値に設定される。 F が "g", "i", "m" 以外の文字を含むならば、また一旦出現したものと同じものを含むならば、例外 SyntaxError を投げる。 P の文字が書式 Pattern を持たないならば、例外 SyntaxError を投げる。そうでなければ、新規に構築されたオブジェクトに Pattern の評価 ("compiling") により得られる [[Match]] プロパティを持たせる。 Pattern の評価が例外 SyntaxError を投げてもよいことに注意。 (Note pattern が StringLiteral ならば、 文字列が RegExp によって処理される前に、通常のエスケープシーケンスの変換が実行される。 RegExp によって認識されるエスケープシーケンスを pattern に含めなければならないならば、 StringLiteral の内容の形成時に削除されることを防ぐために、 StringLiteral 内の文字 "\" はエスケープされなければならない。) 新規に構築されたオブジェクトの source プロパティは、 P に基づくPattern の書式の実装依存の文字列値に設定される。 新規に構築されたオブジェクトの lastIndex プロパティは、 0 に設定される。 新規に構築されたオブジェクトの [[Prototype]] プロパティは、 RegExp.prototype の初期値であるオリジナルの RegExp プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの [[Class]] プロパティは、 "RegExp" に設定される RegExp コンストラクタのプロパティ (Properties of the RegExp Constructor) RegExp コンストラクタのの内部 [[Prototype]] プロパティの値は、 Function プロトタイプオブジェクト (セクション 15.3.4) である。 内部プロパティと length プロパティ (値は 2) の他に、 RegExp コンストラクタは次のプロパティを持つ RegExp.prototype RegExp.prototype の初期値は RegExp プロトタイプオブジェクト (セクション 15.10.6) である。 このプロパティは属性 { DontEnum, DontDelete, ReadOnly } を持つべきである。 RegExp プロトタイプオブジェクトのプロパティ (Properties of the RegExp Prototype Object) RegExp プロトタイプオブジェクトの内部 [[Prototype]] プロパティの値は、 Object プロトタイプである。 RegExp プロトタイプオブジェクトの内部 [[Class]] プロパティの値は、 "Object" である。 RegExp プロトタイプオブジェクトは、独自の valueOf プロパティを持たない; しかしながら、 valueOf プロパティを Object プロトタイプオブジェクトから継承する。 RegExp プロトタイプオブジェクトのプロパティである関数の以下の説明において、フレーズ "この RegExp オブジェクト" は、関数呼出しの this 値であるオブジェクトを参照する; this 値 が内部 [[Class]] プロパティが "RegExp" のオブジェクトでない場合は、例外 TypeError が投げられる。 RegExp.prototype.constructor RegExp.prototype.constructor の初期値は、組込み RegExp コンストラクタである。 RegExp.prototype.exec(string) 正規表現に対して string の正規表現マッチを行い、マッチの結果を含む Array オブジェクト、また文字列にマッチしなかった場合は null を返す。 文字列 ToString(string) は、次のように正規表現パターンの発生を検索される S を ToString(string) の値とする。 length を S の長さとする。 lastIndex を lastIndex プロパティの値とする。 i を ToInteger(lastIndex) の値とする。 global プロパティが false ならば、 i = 0 とする。 I 0 または I length ならば、 lastIndex を 0 に設定し、 null を返す。 [[Match]] と呼出し、引数に S と i を与える。 [[Match]] が failure を返したならば、 ステップ 8 へ; そうでなければ、 r をその State 結果とし、 ステップ 10 へ。 i = i+1 とする。 ステップ 6 へ。 e を r の endIndex 値とする。 global プロパティが true ならば、 lastIndex を e に設定する。 n を r の captures 配列の長さとする。 (これは、セクション 15.10.2.1 の NCapturingParens と同じ値である。) 次のプロパティを持つ新しい配列を返す * index プロパティは、完全な文字列 S 内でマッチした部分文字列の位置に設定される。 * input プロパティは、 S に設定される。 * length プロパティは、 n + 1 に設定される。 * 0 プロパティは、マッチした部分文字列 (すなわち オフセット i からオフセット e の前までの間のS の成分) に設定される。 * I 0 かつ I ≤ n であるような整数 i のそれぞれについて、 ToString(i) を名前とするプロパティに r の captures 配列の i 番目の要素を設定する。 RegExp.prototype.test(string) 式 RegExp.prototype.exec(string) != null と同様である。 RegExp.prototype.toString() src を現在の正規表現を表す Pattern の書式の文字列とする。 src は、 source プロパティまた RegExp コンストラクタに供給されるソースコードと同一であってもなくてもよい; ただ、 src が現在の正規表現の flags を伴って RegExp コンストラクタに供給されたならば、結果の正規表現は、現在の正規表現と同様に振るまわなければならない。 toString は、文字列 "/", src, "/" の連結で形成される文字列を返す; global プロパティが true ならば "g"、 ignoreCase プロパティが true ならば "i"、 multiline プロパティが true ならば "m" を、連結する文字列に追加する。 NOTE 実装は、 src 内の特殊文字をエスケープするために、 RegExp コンストラクタへ渡されるソースと異なることを許可されている src の利用を選択してよい。例えば、 new RegExp("/") から得られる正規表現において、 src は、数ある可能性の中から、 "/" または "\/" でありえる。後者は、書式 RegularExpressionLiteral を持つ toString 呼出しの完全な結果 ("/\//") を許可する。 RegExp インスタンスのプロパティ (Properties of RegExp Instances) RegExp インスタンスは、上記に指定されるその [[Prototype]] オブジェクトからプロパティを継承し、また次のプロパティを持つ。 source source プロパティの値は、 現在の正規表現をあらわす Pattern の書式の文字列値である。このプロパティは、属性 { DontDelete, ReadOnly, DontEnum } を持つべきである。 global global プロパティの値は、 flags が文字 "g" を含むかどうかを示す Boolean 値である。このプロパティは、属性 { DontDelete, ReadOnly, DontEnum } を持つべきである。 ignoreCase ignoreCase プロパティの値は、 flags が文字 "i" を含むかどうかを示す Boolean 値である。このプロパティは、属性 { DontDelete, ReadOnly, DontEnum } を持つべきである。 multiline multiline プロパティの値は、 flags が文字 "m" を含むかどうかを示す Boolean 値である。このプロパティは、属性 { DontDelete, ReadOnly, DontEnum } を持つべきである。 lastIndex lastIndex プロパティの値は、文字列の次のマッチを開始する位置を特定する整数である。このプロパティは、属性 { DontDelete, DontEnum } を持つべきである。