TECH I.S.

JavaScript文字列検索

JavaScript searchメソッド

  • String indexOf()
  • String lastIndexOf()
  • String search()
  • String match()
  • String matchAll()
  • String includes()
  • String startsWith()
  • String endWith()

JavaScript文字列indexOf()

IndexOf()メソッドは、文字列内で最初に出現した文字列のインデックス(位置)を返します。

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

注意

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

0は文字列の最初の位置、1は2番目、2は3番目、...


JavaScript文字列lastIndexOf()

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

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

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

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

どちらのメソッドも、検索の開始位置として 2番目のパラメーターを受け入れます。

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

lastIndexOf()メソッドは逆方向(末尾から先頭へ)を検索します。つまり、2番目のパラメーターが15の場合、検索は位置15から開始され、文字列の先頭まで検索されます。

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


JavaScript文字列search()

search()メソッドは、文字列(または正規表現)の文字列を検索し、一致した位置を返します。

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

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


気づきましたか?

2つのメソッド、indexOf()search()等しいですか?

それらは同じ引数(パラメーター)を受け入れ、同じ値を返しますか?

2 つの方法は同等ではありません。違いは次のとおりです。

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

正規表現については、後の章で詳しく説明します。


JavaScript文字列match()

match()メソッドは、文字列(または正規表現) に対して文字列を照合した結果を含む配列を返します。

「ain」を検索します。

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

「ain」を検索します。

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

「ain」のグローバル検索を実行します。

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

「ain」の大文字と小文字を区別しないグローバル検索を実行します。

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

注意

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

正規表現の詳細については、JS正規表現の章を参照してください。


JavaScript文字列matchAll()

matchAll()メソッドは、文字列 (または正規表現) に対して文字列を照合した結果を含む反復子を返します。

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

パラメータが正規表現の場合、グローバルフラグ(g)を設定する必要があります。設定しないと、TypeErrorがスローされます。

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

大文字と小文字を区別しないで検索する場合は、insensitiveフラグ(i)を設定する必要があります。

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

注意

matchAll()ES2020の機能です。
matchAll()はInternet Explorerでは機能しません。

JavaScript文字列includes()

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

それ以外の場合はfalseを返します。

文字列に「world」が含まれているかどうかを確認します。

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

文字列に「world」が含まれているかどうかを確認します。位置12から開始します。

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

注意

includes()では大文字と小文字が区別されます。
includes()ES6の機能です。
includes()はInternet Explorerではサポートされていません。

JavaScript文字列startsWith()

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

それ以外の場合はfalseを返します。

trueを返します:

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

falseを返します:

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

検索の開始位置を指定できます。

falseを返します:

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

trueを返します:

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

注意

startsWith()では大文字と小文字が区別されます。
startsWith()ES6の機能です。
opensWith()はInternet Explorerではサポートされていません。

JavaScript文字列endWith()

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

それ以外の場合はfalseを返します:

文字列が「Doe」で終わっているかどうかを確認します。

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

文字列の最初の11文字が「world」で終わっているかどうかを確認します。

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

注意

endsWith()では大文字と小文字が区別されます。
endsWith()ES6の機能です。
endsWith()はInternet Explorerではサポートされていません。

完全な文字列リファレンス

完全なStringリファレンスについては、次のURLにアクセスしてください。
完全なJavaScript文字列リファレンス(開発準備中)
リファレンスには、すべての文字列プロパティとメソッドの説明と例が含まれています。

プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細