- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FireFox正規表現のstickyフラグの意味)
FireFox正規表現のstickyフラグの意味
このQ&Aのポイント
- FireFox3から、正規表現にstickyフラグなるものが追加されました。
- MDNではサンプルが示されていますが、そのサンプルのフラグを「g」フラグに書き換えても挙動は全く同じであり、有用性の説明にはなっていないものと思われます。
- yフラグはmgフラグ指定時と全く同じなのでしょうか。違う部分があるのでしょうか?もし違う部分があるのならyフラグの意味や、mgフラグとの違い・有用性がわかるサンプルを教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ヘルプを眺めながら試してみました。 その結果、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 →「^」はあくまでも行頭とマッチ 構文解析を行うのに便利そうです。
お礼
「^」の意味が変わるのがポイントですね。文章にするとわかりにくいですけど、(正しい)サンプルなら理解しやすかったです。 MDNの「^」がないサンプルは、ほとんど理解していない人が間違って作ったのでしょうね。 勉強になりました。ありがとうございました。