JavaScriptでtestメソッドを使って指定した文字列が正規表現とマッチするか調べる方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptでtestメソッドを使って指定した文字列が正規表現とマッチするか調べる方法について現役エンジニアが解説しています。testメソッドとは、引数の文字列が正規表現にマッチしているかどうか確認する関数です。正規表現とは、文字列のパターンを確認する手段となります。

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

JavaScriptでtestメソッドを使って指定した文字列が正規表現とマッチするか調べる方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使って初心者向けに解説します。

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

JavaScriptでtestメソッドを使って指定した文字列が正規表現とマッチするか調べる方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

正規表現とは

正規表現とは、文字列のパターンを表記しそのパターンに一致するかを確認する手段となります。例えば、文章の中に郵便番号があればその部分を抜き出したり、先頭が”#”で始まる行を無視したりなど、利用用途は多岐にわたります。

/^\d{3}-\d{4}-\d{4}$/

上記は、携帯番号を示す正規表現で、「3桁の数字+”-“+4桁の数字+”-“+4桁の数字」となっています。

 

testメソッドとは

testメソッドは、正規表現の文字列に対して引数の文字列がマッチするかを確認できます。

ここで重要なのは、あくまでもマッチするか否かの確認なので、返却値はtrue/falseになるところです。マッチした値が返却されるわけではありませんので注意して利用しましょう。

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

指定した文字列が正規表現とマッチするか調べる方法

まずは、例を見てみましょう。

var exp = /^\d{3}-\d{4}-\d{4}$/ ;
var str = ’私の電話番号は090-0000-1111です。’
var ret = exp.test(str))
console.log(ret);
ret = exp.test(str)
console.log(ret);

例になるように、正規表現の変数側でtestメソッドを利用し、引数に確認する文字列を入れます。

この例では、2回行っっていますが、1回目は”true”で2回目が”false”になります。それは、testメソッドを利用するごとにlastIndexを更新し、次回からはその次の場所からの検索となるためです。

testメソッドとsearchメソッド、execメソッドの違い

さて、正規表現を利用した文字列の検索にはtestメソッドの他にも、「search」「exec」などのメソッドもあります。ここでは、その違いや利用場面を解説したいと思います。

test

正規表現側で利用し、引数の文字列にマッチするものがあるかをtrue/falseで返却します。lastIndexを更新するため、同じ検索を繰り返すと、最終的にはfalseになります。正規表現の値があるか否かだけを確認するのに使う場合が多いです。

search

検索される文字列側で呼び出す。正規表現でマッチする部分の先頭文字の位置(全角、半角ともに1文字とし、先頭は0)が返却されます。正規表現の値を抽出するというよりは、その位置に対して何らかの作業(分割するなど)を行うときなどに利用します。

exec

正規表現側で利用し、引数の文字列にマッチした部分をマッチした文字や位置などの配列で返却してくれます。繰り返し実行しマッチした文字列を抽出する時などに利用します。

他にもmatchメソッドというのもあり、これは一回でマッチした文字列を配列で返却してくれます。

筆者プロフィール

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

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

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