icon
icon

JavaScriptで文字列を検索する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptで文字列を検索する方法について現役エンジニアが解説しています。JavaScriptのindexOf・search・match・testメソッドを使って文字列を検索する方法や正規表現を使って文字列を検索する方法を解説します。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

高田 悠

JavaScriptを用いた実装などフロントエンド領域の開発が得意。Web上での3D表現に興味がありWebARの実装案件を複数経験。ワークライフバランスを重視してフリーランス生活を送っている。

JavaScriptで文字列を検索する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

1時間でできる無料体験!

そもそも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

 

[PR] フロントエンドで副業する学習方法を動画で公開中

正規表現を用いた文字列検索

正規表現とは

正規表現とは、「文字列のパターン」を表す、規則に従った記号の羅列です。

例えば、日本の郵便番号は「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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

まとめ

文字列検索する方法として、たくさんのメソッドを学習しましたね。

いきなり全てを覚えるのは難しいですが、実際に使って返り値を確認しながら覚えていくことで、効率的に身に付けることができますよ。

今回は以上です。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

JavaScriptを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する