• ベストアンサー

Javascript searchで?があるとなぜ

JavaScriptのsearch関数についてですが、文字列に?があると期待したとおりの結果が得られないのですがなぜでしょうか。 Google Chrome の JavaScriptコンソールでの結果 'abcd?efg'.search('abcd?') 0 'abcd?efg'.search('abcd?e') -1 どちらも0が返ってこないのはどうしてでしょうか。

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

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.1

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/search searchは正規表現でマッチを行うので?はエスケープする必要があります。 'abcd?efg'.search('abcd\\?e') https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf indexOfというのもあります。 こちらは、文字列マッチなのでエスケープする必要ありません。

meteoyameteo
質問者

お礼

ありがとうございます。文字列が内部的に正規表現になるんですね。エラーにならないので気付きませんでした。まさかそんな柔軟性があるわけがないとどこかで思い込んでいました。