JavaScriptのsearchメソッドの使い方!文字列を正規表現で検索

JavaScriptで文字列の中に指定した文字列やパターンを見つけて
最初に出現する位置を返すsearchメソッドについて書いています。

searchメソッドを使うと、文字列の中から特定の文字列やパターンが最初に出現する位置を簡単に調べることができます。
文字列処理を行う際に、特定の文字列やパターンが最初に出現する位置を知りたい場合に便利です。

実際に動くサンプルを使って、以下の操作を解説します。

・`search`メソッドの基本的な使い方
・`indexOf`メソッドとの違い
・`includes`メソッドと`indexOf`メソッドの違い

searchメソッドの基本的な使い方

searchメソッドは、文字列の中に指定した文字列やパターンが最初に出現する位置を返し、見つからない場合は-1を返します。
基本的な構文は以下のとおりです。

string.search(regexp)
  • regexp: 検索する文字列または正規表現。
    • 文字列またはRegExpオブジェクト(必須)。
    • 正規表現を使用する場合は、フラグ(i、mなど)を指定できます。

文字列の位置を調べる

文字列の位置をsearchメソッドを使って調べてみます。

const str = 'Hello World!';

console.log(str.search('World')); // 結果:6
console.log(str.search('world')); // 結果:-1

最初にstr変数に文字列を代入しています。

次の処理で、文字列の中に’World’という文字列が最初に出現する位置をsearchメソッドで調べています。
‘World’は6番目の文字から始まるため、search('World')は「6」を返します。

一方、最後の処理で’world’(小文字)を探していますが
str文字列に含まれていないため、search('world')は-1を返します(大文字小文字は区別されます)。

正規表現を使って位置を調べる

正規表現を使って、文字列の位置を調べます。

const str = 'Hello World! hello!';

console.log(str.search(/hello/i)); // 結果:0

正規表現を使って、大文字小文字を区別せずに’hello’が最初に出現する位置を調べています。
iフラグ(ignore case flag)を指定することで、大文字小文字を区別せずに検索できます。

大文字小文字が区別されないので、最初の「Hello」にヒットして、「0」を返します。

includesメソッドとindexOfメソッドの違い

includesメソッドとindexOfメソッドは、どちらも文字列が特定の文字列を含むかどうかを調べるために使用されます。
しかし、両者の間にはいくつかの違いがあります。

  • 戻り値:
    • includesメソッドは、真偽値(trueまたはfalse)を返します。
    • indexOfメソッドは、最初にマッチした部分文字列のインデックスを返します。
    • どちらのメソッドも、マッチしなかった場合は-1を返します。

違いのまとめ

メソッド 引数 戻り値 正規表現
search 文字列または正規表現 最初に出現する位置(見つからない場合は-1) 使用可能
indexOf 文字列 最初に出現する位置(見つからない場合は-1) 使用不可
includes 文字列 真偽値(trueまたはfalse) 使用不可

実際にコードを書いて比べてみます。

const str = 'Hello World! Hello!';

// includes()
console.log(str.includes('World')); // 結果:true
console.log(str.includes('world')); // 結果:false

// indexOf()
console.log(str.indexOf('World')); // 結果:6
console.log(str.indexOf('world')); // 結果:-1

// search()
console.log(str.search(/World/)); // 結果:6
console.log(str.search(/world/)); // 結果:-1
console.log(str.search(/hello/i)); // 結果:0

includesメソッドでは、true/falseが返ってくることが確認できます。
indexOfメソッドでは文字列でしか検索できません。ない場合には-1となっています。
searchメソッドもない場合には-1が返ってきます。(文字列と正規表現での検索が可能です)

JavaScriptのsearchメソッドの使い方まとめ

今回はJavaScriptのsearchメソッドの使い方について解説しました。
この記事の内容をまとめます。

・`search(regexp)`で文字列の中に指定した文字列やパターンが最初に出現する位置を返す。
・`regexp`は検索する文字列または正規表現(必須)。
・見つかった場合は最初に出現する位置を返し、見つからない場合は-1を返す。
・正規表現を使用することで、より複雑なパターンにマッチする部分文字列を検索できる。
・`indexOf`メソッドは、文字列のみを引数に指定できる。
・`includes`メソッドは、真偽値を返す。

コメント