search() メソッドは、対象の String オブジェクトが正規表現でマッチできるかどうかを調べるためのメソッドです。

構文

str.search(regexp)

引数

regexp
正規表現オブジェクトを引数に取ります。 RegExp オブジェクトではない obj が渡された場合、内部的に new RegExp(obj) が用いられ、RegExp オブジェクトに暗黙的に変換されます。

戻り値

マッチした場合、文字列内でマッチした箇所のインデックスを返します。マッチしなかった場合は、-1 を返します。

説明

文字列の中で特定のパターンが存在するかどうかを知りたい場合、 search() メソッドを利用してください(存在の有無を知りたいだけの場合、同様のメソッドとして、boolean を返す test() メソッドがあります)。より多くの情報が欲しい場合は、(実行速度が遅くなりますが)match() メソッドを使用してください(同様のメソッドとして、exec() メソッドがあります)。

テストが成功したかどうかのメッセージを出力する関数の例を以下に示します。

function testinput(re, str) {
  var midstring;
  if (str.search(re) != -1) {
    midstring = ' contains ';
  } else {
    midstring = ' does not contain ';
  }
  console.log(str + midstring + re);
}

仕様

仕様 ステータス コメント
ECMAScript 3rd Edition (ECMA-262) 標準 初期定義。JavaScript 1.2 で実装。
ECMAScript 5.1 (ECMA-262)
String.prototype.search の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.search の定義
標準  
ECMAScript Latest Draft (ECMA-262)
String.prototype.search の定義
ドラフト  

ブラウザ実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

Gecko 特有の注記

  • Gecko 8.0 以下では、search() は不正確な実装になっています。引数を渡さなかったり、undefined が渡されたりして呼び出された場合、空文字に対するマッチではなく、'undefined' 文字列に対するマッチを返します。これは修正され、現在は 'a'.search()'a'.search(undefined) は正確に 0 を返します。
  • Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36) から、非標準の flags 引数が非推奨になり、コンソール警告をスローします(バグ 1142351)。
  • Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44) から、非リリースビルドで非標準の flags 引数がサポートされなくなり、近いうちに全体から削除される予定です(バグ 1245801)。
  • Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46) から、非標準の flags 引数はサポートされなくなりました(バグ 1108382)。

関連項目

ドキュメントのタグと貢献者

このページの貢献者: YuichiNukiyama, mamodayo, teoli, ethertank, Mgjbot, Potappo
最終更新者: YuichiNukiyama,