search()
メソッドは、対象の String
オブジェクトが正規表現でマッチできるかどうかを調べるためのメソッドです。
構文
str.search(regexp)
引数
regexp
- 正規表現オブジェクトを引数に取ります。
RegExp
オブジェクトではないobj
が渡された場合、内部的にnew RegExp(obj)
が用いられ、RegExp
オブジェクトに暗黙的に変換されます。
戻り値
マッチした場合、文字列内でマッチした箇所のインデックスを返します。マッチしなかった場合は、-1 を返します。
説明
文字列の中で特定のパターンが存在するかどうかを知りたい場合、 search()
メソッドを利用してください(存在の有無を知りたいだけの場合、同様のメソッドとして、boolean を返す test()
メソッドがあります)。より多くの情報が欲しい場合は、(実行速度が遅くなりますが)match()
メソッドを使用してください(同様のメソッドとして、exec()
メソッドがあります)。
例
例: search()
メソッドの使用
テストが成功したかどうかのメッセージを出力する関数の例を以下に示します。
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 2017 Draft (ECMA-262) String.prototype.search の定義 |
ドラフト |
ブラウザ実装状況
機能 | 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)。