- ベストアンサー
Javascript searchで?があるとなぜ
JavaScriptのsearch関数についてですが、文字列に?があると期待したとおりの結果が得られないのですがなぜでしょうか。 Google Chrome の JavaScriptコンソールでの結果 'abcd?efg'.search('abcd?') 0 'abcd?efg'.search('abcd?e') -1 どちらも0が返ってこないのはどうしてでしょうか。
- みんなの回答 (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というのもあります。 こちらは、文字列マッチなのでエスケープする必要ありません。
お礼
ありがとうございます。文字列が内部的に正規表現になるんですね。エラーにならないので気付きませんでした。まさかそんな柔軟性があるわけがないとどこかで思い込んでいました。