質問: null); // "true" を出力します ※「print」は明らかなミスだと思われるため「console.log」に書き換えています。
回答: ヘルプを眺めながら試してみました。 その結果、yフラグとmgフラグとで「^」の解釈に違いがあることがわかりました。 var text = "a1a2a3a4a5\na6a7a8a9a0"; var regex = /^a[0-9]\n?/y; while(true){ var match = regex.exec(text); if(match === null){ console.log("end"); break; } for(var i=0; i < match.length; i++){ console.log(i + ":" + match[i]); } } yフラグでの実行結果: 0:a1 0:a2 0:a3 0:a4 0:a5 0:a6 0:a7 0:a8 0:a9 0:a0 end →「^」は行頭、または検索の開始位置とマッチ mgフラグでの実行結果: 0:a1 0:a6 end →「^」はあくまでも行頭とマッチ 構文解析を行うのに便利そうです。