JavaScriptで文字列を検索する方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaScriptで文字列を検索する方法について現役エンジニアが解説しています。JavaScriptのindexOf・search・match・testメソッドを使って文字列を検索する方法や正規表現を使って文字列を検索する方法を解説します。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
監修してくれたメンター
高田 悠
JavaScriptで文字列を検索する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
目次
そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。
今回は、JavaScriptに関する内容だね!
どういう内容でしょうか?
JavaScriptで文字列を検索する方法について詳しく説明していくね!
お願いします!
文字列を検索する方法
JavaScriptで文字列の検索(ある文字列の中に検索対象の文字列が存在するか)をする方法は多岐に渡ります。
文字列を検索するためのメソッドは大きく分けて、「文字列を直接検索するもの」と「正規表現※を用いるもの」の2種類があります。
※正規表現とは何かについては、本記事の正規表現を用いた文字列検索の章で解説します。
まずはじめに、文字列検索でよく使われるメソッドを一覧で確認してみましょう。
文字列を直接検索するメソッド
- includes
- indexOf
- lastIndexOf
正規表現を用いて文字列を検索するメソッド
- match
- search
- test
6つのメソッドはそれぞれ違う仕様を持っています。
次の章からは各メソッドについて詳しく見ていきましょう。
文字列を直接検索する
includes
includesは、ある文字列の中に対象の文字列が含まれていればtrue、そうでなければfalseを返すメソッドです。
単純な文字列検索であれば、true / falseで結果を確認できるincludesを使うのが最も簡潔です。
ただし、includesメソッドは2021年7月現在、Internet Explorer非対応です。
includesメソッドは、文字列.includes(検索したい文字列)
の形で記述します。
const sourceText = "この文章に対して文字列検索を行います";
console.log(sourceText.includes("文字列検索")); //-> true
console.log(sourceText.includes("テキスト検索")); //-> false
indexOf
indexOfは、ある文字列の中に対象の文字列が含まれていればその文字列が何文字目から始まるかを、含まれていなければ-1を返します。
includesメソッドとの違いは、true / false ではなく、検索対象の文字列の位置(インデックス)を返すという点です。
また、indexOfは全ての主要ブラウザに対応しているため、includesが使えない環境でも使用できます。
indexOfメソッドは、文字列.indexOf(検索したい文字列)
の形で記述します。
const sourceText = "この文章に対して文字列検索を行います";
console.log(sourceText.indexOf("文")); //-> 2 (sourceTextの先頭からみた最初の"文"という文字の位置)
console.log(sourceText.indexOf("分")); //-> -1 (検索文字列が見つからなければ-1)
lastIntexOf
lastIndexOfメソッドはindexOfメソッドとよく似ていますが、文字列の最後から検索をします。
使うケースが多くはないメソッドですが、実装の引き出しとして認識しておきましょう。
lastIndexOfメソッドは、文字列.lastIndexOf(検索したい文字列)
の形で記述します。
const sourceText = "この文章に対して文字列検索を行います";
console.log(sourceText.lastIndexOf("文")); //-> 8 (sourceTextの末尾からみた最初の"文"という文字の位置)
console.log(sourceText.lastIndexOf("分")); //-> -1
正規表現を用いた文字列検索
正規表現とは
正規表現とは、「文字列のパターン」を表す、規則に従った記号の羅列です。
例えば、日本の郵便番号は「000-0000」のように数字3桁-数字4桁となっています。
この携帯電話番号のパターンを正規表現で表すと、/[0-9]{3}-[0-9]{4}/g
のようになります。
正規表現を用いると、特定の文字列に縛られず、網羅的に文字列検索を行うことができます。
match
matchメソッドは、文字列がある正規表現パターンに一致する文字列を含むかどうかを検索します。
返り値は、一致した文字列全てを格納した配列です。
文法は、文字列.match(正規表現)
となります。
const sourceText = "ここの郵便番号は123-4567です。隣町の郵便番号は123-6789です";
console.log(sourceText.match(/[0-9]{3}-[0-9]{4}/g)); //-> ['123-4567','123-6789']
search
searchメソッドもmatchメソッドと同様、文字列がある正規表現パターンに一致する文字列を含むかどうかを検索します。
searchメソッドの返り値はmatchメソッドと違い、一致した文字列の位置を表す数字(インデックス)です。
いわば、indexOfの正規表現バージョンと考えることができます。
文法は、文字列.search(正規表現)
となります。
const sourceText = "郵便番号は123-4567です。";
console.log(sourceText.search(/[0-9]{3}-[0-9]{4}/g)); //-> 5 (123-4567がマッチし、先頭から見た位置である5を返す)
test
testメソッドはある正規表現パターンに一致する文字列が含まれるかどうかを、true / falseのどちらかで返します。
文法がmatchやsearchとは異なり、正規表現.test(文字列)
となる点に注意が必要です。
const sourceText = "郵便番号は123-4567です。";
const exp = /[0-9]{3}-[0-9]{4}/g
console.log(exp.test(sourceText)); //-> true
まとめ
文字列検索する方法として、たくさんのメソッドを学習しましたね。
いきなり全てを覚えるのは難しいですが、実際に使って返り値を確認しながら覚えていくことで、効率的に身に付けることができますよ。
今回は以上です。
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
JavaScriptを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!