JavaScriptの文字列検索

文字列を検索するための JavaScript メソッド:

  • String.indexOf()
  • String.lastIndexOf()
  • String.startsWith()
  • String.endsWith()

String.indexOf()

indexOf() 方法は指定されたテキストが文字列の中に存在するかどうかを返します。最初に(の場所)のインデックスが現れました:

let str = "Please locate where 'locate' occurs!";
str.indexOf("locate")    // 返り値は 7

実際に試してみてください

JavaScript はゼロから位置を計算します。

0 は文字列の中の最初の位置であり、1 は第二、2 は第三 ...

String.lastIndexOf()

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

let str = "Please locate where 'locate' occurs!";
str.lastIndexOf("locate")    // 21を返します

実際に試してみてください

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

let str = "Please locate where 'locate' occurs!";
str.lastIndexOf("Bill")    // -1を返します

実際に試してみてください

これら2つのメソッドは2番目のパラメータを検索の開始位置として受け取ります:

let str = "Please locate where 'locate' occurs!";
str.indexOf("locate", 15)    // 21を返します

実際に試してみてください

lastIndexOf() メソッドは後方から検索します(末尾から先頭に向かって)、つまり:2番目のパラメータが 15、それから位置15から始めて、文字列の先頭まで検索します。

let str = "Please locate where 'locate' occurs!";
str.lastIndexOf("locate", 15)    // 7を返します

実際に試してみてください

String.search()

search() メソッドは指定された値を文字列内で検索し、マッチングの場所を返します:

let str = "Please locate where 'locate' occurs!";
str.search("locate")     // 7を返します

実際に試してみてください

気づきましたか?

indexOf() そして search() これら2つのメソッド、等しいですか?

彼らは同じパラメータを受け取り、同じ値を返しますか?

これら2つのメソッドは等しくありません。以下の違いがあります:

  • search() メソッドは2番目の開始位置パラメータを受け入れません。
  • indexOf() メソッドは強力な検索値(正規表現)を利用できません。

正規表現の詳細は後の章で学びます。

String.match()

match()メソッドは正規表現に基づいて文字列内でマッチングアイテムを検索し、マッチングアイテムをArrayオブジェクトとして返します。

例1

文字列内で「ain」を検索します:

スペインの雨は主に平原に留まります。
text.match(/ain/g)    // 配列 [ain,ain,ain] を返します

実際に試してみてください

正規表現の詳細はJS RegExpの章で学んでください。

正規表現にg修飾子(完全検索を実行)が含まれていない場合、match()メソッドは文字列内の最初のマッチングアイテムのみを返します。

文法

string.match(regexp)
regexp 必須です。検索する値は正規表現です。
返却: 配列、マッチングアイテムを含みます。各マッチングアイテムは1つのプロジェクトに対応します。マッチングアイテムが見つからない場合はnullです。

例2

「ain」に対して、大文字と小文字を区別しない完全な検索を実行します:

スペインの雨は主に平原に留まります。
text.match(/ain/gi)   // 返回数组 [ain,AIN,ain,ain]}

実際に試してみてください

String.includes()

指定された値を含む場合includes() メソッドはtrueを返します。

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

実際に試してみてください

ブラウザのサポート

Internet ExplorerはString.includes()をサポートしていません。

Chrome IE Firefox Safari Opera
Chrome 41 Edge 12 Firefox 40 Safari 9 Opera 28
2015年3月 2015年7月 2015年8月 2015年10月 2015年3月

文法

string.includes(searchvalue, start)
searchvalue 必要です。検索する文字列が必要です。
start オプションです。デフォルトは0です。検索を開始する位置。
返却: 指定された値を含む場合 true、そうでない場合は false
JSバージョン: ES6 (2015)

文字列が"world"を含むかどうかを確認します、位置12から検索します:

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

実際に試してみてください

String.startsWith()

指定された値で始まる場合 startsWith() メソッドは返します true、そうでない場合は false

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

実際に試してみてください

文法

string.startsWith(searchvalue, start)

パラメータ値

パラメータ 説明
searchvalue 必要です。検索する値が必要です。
start オプションです。デフォルトは0です。検索を開始する位置。

let text = "Hello world, welcome to the universe.";
text.startsWith("world")    // 返回 false
let text = "Hello world, welcome to the universe.";
text.startsWith("world", 5)    // 返回 false
let text = "Hello world, welcome to the universe.";
text.startsWith("world", 6)    // 返回 true

実際に試してみてください

注:startsWith() メソッドは大文字小文字を区別します。

Internet Explorer はサポートしていません startsWith() メソッド。

完全にサポートされている最初のブラウザバージョンは:

Chrome IE Firefox Safari Opera
Chrome 41 Edge 12 Firefox 17 Safari 9 Opera 28
2015年3月 2015年7月 2015年8月 2015年10月 2015年3月

String.endsWith()

指定された値で終わる場合 endsWith() メソッドは返します true、そうでない場合は false

文字列が"Gates"で終わるかどうかを確認します:

var text = "Bill Gates";
text.endsWith("Gates")    // 返回 true

実際に試してみてください

文法

string.endsWith(searchvalue, length)

パラメータ値

パラメータ 説明
searchvalue 必要です。検索する値が必要です。
length オプション。検索する長さ。

"world" で終わる文字列の最初の 11 文字を検索します:

let text = "Hello world, welcome to the universe.";
text.endsWith("world", 11)    // true を返します

実際に試してみてください

注:endsWith() メソッドは大文字小文字を区別します。

Internet Explorer はサポートしていません endsWith() メソッド。

この方法を完全にサポートする最初のブラウザバージョンは:

Chrome IE Firefox Safari Opera
Chrome 51 Edge 15 Firefox 54 Safari 10 Opera 38
2016 年 5 月 2017 年 4 月 2017 年 6 月 2016 年 9 月 2016 年 6 月

完全な文字列リファレンスマニュアル

完全なリファレンスが必要な場合は、私たちの完全な JavaScript 文字列リファレンスマニュアル

このマニュアルには、すべての文字列属性とメソッドの説明と例が含まれています。