JavaScript 文字列の検索

文字列検索メソッド

String indexOf()

String lastIndexOf()

String search()

JavaScript String indexOf()

indexOf() メソッドは文字列内の指定された文字列の最初の出現位置(インデックス)を返します。見つからない場合は -1 を返します:


let text = "Please locate where 'locate' occurs!";
let index = text.indexOf("locate");

JavaScript はゼロから位置をカウントします。

JavaScript String lastIndexOf()

lastIndexOf() メソッドは文字列内の指定されたテキストの最後の出現位置のインデックスを返します:


let text = "Please locate where 'locate' occurs!";
let index = text.lastIndexOf("locate");

indexOf()lastIndexOf() は、テキストが見つからない場合はどちらも -1 を返します。

indexOf()lastIndexOf() の違い

indexOf()lastIndexOf() にはいくつかの違いがあります:

  • search() メソッドは、開始位置を指定する二番目の引数を取れません。
  • indexOf() メソッドは、強力な検索値(正規表現)を取ることができません。

JavaScript String search()

search() メソッドは文字列を検索し、その文字列(または正規表現)が見つかった位置を返します:


let text = "Please locate where 'locate' occurs!";
text.search("locate");

let text = "Please locate where 'locate' occurs!";
text.search(/locate/);

注意: indexOf()search() は引数として同じ値を受け取り、同じ値を返しますが、動作は異なります。

JavaScript String match()

match() メソッドは、文字列(または正規表現)に一致する結果を含む配列を返します:


let text = "The rain in SPAIN stays mainly in the plain";
text.match("ain");

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/);

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/g);

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/gi);

ヒント: 正規表現に g フラグ(グローバル検索)が含まれていない場合、match() は文字列内の最初の一致のみを返します。

JavaScript String matchAll()

matchAll() メソッドは、文字列(または正規表現)に一致する結果を含むイテレータを返します:


const iterator = text.matchAll("Cats");

パラメータが正規表現の場合、グローバルフラグ(g)が設定されている必要があります。そうでない場合は TypeError が発生します:


const iterator = text.matchAll(/Cats/g);

大文字小文字を区別しない検索を行いたい場合は、無視フラグ(i)を設定する必要があります:


const iterator = text.matchAll(/Cats/gi);

注意: matchAll() は ES2020 の機能です。

matchAll() は Internet Explorer では動作しません。

JavaScript String includes()

includes() メソッドは文字列が指定された値を含む場合に true を返します:


let text = "Hello world, welcome to the universe.";
text.includes("world");

指定された位置からの検索を開始することもできます:


let text = "Hello world, welcome to the universe.";
text.includes("world", 12);

ヒント: includes() は大文字小文字を区別します。

重要: includes() は ES6 の機能です。

includes() は Internet Explorer ではサポートされていません。

JavaScript String startsWith()

startsWith() メソッドは文字列が指定された値で始まる場合に true を返します:


let text = "Hello world, welcome to the universe.";
text.startsWith("Hello");

let text = "Hello world, welcome to the universe.";
text.startsWith("world");

開始位置を指定することもできます:


let text = "Hello world, welcome to the universe.";
text.startsWith("world", 5);

let text = "Hello world, welcome to the universe.";
text.startsWith("world", 6);

重要: startsWith() は ES6 の機能です。

startsWith() は Internet Explorer ではサポートされていません。

JavaScript String endsWith()

endsWith() メソッドは文字列が指定された値で終わる場合に true を返します:


let text = "John Doe";
text.endsWith("Doe");

開始位置を指定することもできます:


let text = "Hello world, welcome to the universe.";
text.endsWith("world", 11);

重要: endsWith() は ES6 の機能です。

endsWith() は Internet Explorer ではサポートされていません。