• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マッチするのにRegExp.lastIndexがundefinedになってしまいます!)

RegExpによるマッチングでRegExp.lastIndexがundefinedになる理由は何ですか?

このQ&Aのポイント
  • JavaScriptの正規表現によるマッチングで、RegExp.lastIndexがundefinedになる場合があります。
  • この現象は、マッチング結果が取得できたにも関わらず、マッチした位置を示すRegExp.lastIndexが設定されないためです。
  • 原因としては、正規表現がグローバルフラグ(g)を持っており、execメソッドが連続して呼ばれるケースが考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

javascriptの実装の違いですね lastIndexは、RegExpオブジェクトをあらためインスタンスのプロパティ になりました。 また、グローバルサーチを指定する必要があります。 https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/lastIndex 共通で動かすにはちょっとした場合分けをすればいいでしょう。 <script> var str = "ABCDEFG"; var rex = new RegExp("C", "gi"); if (rex.exec(str)) { var num=rex.lastIndex; if(!num) num=RegExp.lastIndex; document.write(num+"文字目にマッチ。"); } else { document.write("マッチしません。"); } </script>

masapiyochan
質問者

お礼

おお。ありがとうございます!! なるほど、実装が違うのですね。 私もまだまだ勉強が足りませんでしたね・・・。

関連するQ&A