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

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

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

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

JavaScriptについてそもそもよく分からないという方は、JavaScriptとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、JavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptで文字列を検索する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

文字列を検索する方法

文字列の検索(一致確認)は、プログラムをするうえで避けては通れないところですね。

文字列の検索には幾つかのやり方があると思います。そこで、初心者の方も中級者の方も改めて文字列検索の方法を整理してみましょう。

[PR] フロントエンドで挫折しない学習方法を動画で公開中

indexOfメソッドを使って文字列を検索する方法

indexOfメソッドは、文字列の中に検索対象の文字があるかを検索し、一致する文字の位置情報を返します。検索の開始位置を指定できるのと、配列に使った場合は一致した要素のインデックスを返します。

lastIndexOfメソッドを使って文字列を検索する方法

lastindexOfメソッドは、indexOfとほぼ同じですが、検索が後ろからになるところが違います。位置を指定した場合で、それ以前に一致する文字列がない場合は、一番最後に戻りそこから検索を始めます。

正規表現とは

文字列の検索をする時に、文字列のパターンを利用して検索する時に用います。

パターンと言われてもよくわからないと思いますが、電話番号などをイメージするとわかりやすいかと思います。携帯は「000-0000-0000」のように数字3桁-数字4桁-数字4桁となっているのがわかると思います。

このような汎用化できるものをパターンと言います。このパターンをプログラム中で使えるようにしているのが正規表現です

searchメソッドを使って文字列を検索する方法

正規表現を使って文字列の検索を行えいるメソッドの一つです。searchメソッドを利用すると検索対象を頭から検索し、見つかった対象の文字を返却します。

matchメソッドを使って文字列を検索する方法

同じ、正規表現を使った文字列検索でもmatchメソッドは、返却が配列で返されるのが特徴です。検索対象を頭から検索し、見つかった対象の文字をすべて配列にして返してくれます。

testメソッドを使って文字列を検索する方法

testメソッドは、正規表現が正しいかを確認するイメージが強いです。使い方はsearchやmatchと違い、正規表現側でtestメソッドを利用します。

検索対象に対して正規表現の検索で対象の文字列があればtrueとなります。

実際に書いてみよう

<html>
  <head>
    <metacharset="UTF-8">
    <title>JavaScriptで文字列を検索する方法を現役エンジニアが解説【初心者向け】</title>
  </head>
  <body>
    <h1>JavaScriptで文字列を検索する方法を現役エンジニアが解説【初心者向け】</h1>
    <scripttype="text/javascript">

// indexOf()の場合
    var str1 = 'メロン、いちご、すいか、みかん、ぶどう、きいちご';
    var index1 = str1.indexOf('いちご');
    console.log(index1);
    var index2 = str1.indexOf('いちご', 10);
    console.log(index2);
    // lastIndexOf()の場合
    var str2 = "こんにちは、太郎。私は、花子です。そして、あの人は幸太郎です。";
    var index3 = str2.lastIndexOf("太郎");
    var index4 = str2.lastIndexOf("太郎", 10);

// search()の場合
    var str3 = '私の住所は、111-1234です。あなた住所は、999-9876です。';
    match_pattern = /\d{3}-\d{4}/g;
   r = base_str.search(match_pattern);
   console.log(r);

// match()の場合

    var str4 = "私の電話は、090-1111-2222です。あなたの番号は、080-9999-8888です。";
    match_pattern = /\d{3}-\d{4}-\d{4}/g;
    r = base_str.match(match_pattern);
    if (r) {
      for(vari=0; i<r.length; i++) {
        console.log(r[i]);
      }
    } else {
      console.log("該当なし");
    }

// test()の場合
var str5 = "America、France、Spain、Japan、China";
match_pattern = /\w+?an/g;
r = match_pattern.test(str5);
console.log(r);

</script>
</body>
</html>

 

筆者プロフィール

小宮山晃史(こみやまこうじ)

現在はOracle系システムの導入コンサルに勤め、仕事でコーディングをする機会は少なくなくなっているが、ライフワークで数多くの言語を勉強中。

iphoneのアプリ開発やWEBサーバの構築など幅広く挑戦しています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

TechAcademyでは、初心者でも、JavaScript・jQueryを使ったWebサービス公開を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。