1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

【PHP入門】正規表現を使用したパターンマッチングについて

Pocket

ホームページによくあるお問い合わせ入力フォームから、住所や電話番号、E-mailアドレスなどの個別情報を、登録をすることがありますよね。

入力されたデータは、人が入力するため、必ずしも想定されたとおりの内容であるとは限りません。
そのため、入力されたデータの内容をチェックし、その妥当性を検証するために、正規表現を用いたパターンマッチングという手法が用いられます。
今回は、この正規表現を使用したパターンマッチングについて紹介したいと思います。

正規表現とは

正規表現は、文字列のパターンマッチングに用いる記法のことです。この正規表現で指定した形式どおりに、データが入力されているかどうかをチェックするために使用されます。

正規表現では、いくつかの特殊文字を使って、形式を表現します。これらの特殊文字を「メタ文字」と呼んでいます。
主な特殊文字とその使用例を一覧表にまとめましたので、紹介しておきます。

            

.

preg_match関数とは?

preg_match関数を使用して、正規表現を使ったパターンマッチングをおこなうことができます。

説明

引数に指定したパターンと、入力された文字列がマッチすると、preg_match関数は「1」を返します。マッチしなかった場合は、「0」を返します。
指定するパターンは、前述した正規表現で表します。

書式

preg_match (引数1、引数2)

引数1:パターン(正規表現で指定する。)
引数2:入力文字列
    

戻り値

マッチした:1(TRUE)
マッチしない:0(FALSE)

サンプルプログラムによる使用例

それでは、実際に、preg_match関数を使用して、郵便番号を7桁で入力するプログラムを作成し、実行結果を見てみましょう。
使用する特殊文字は、以下の通りです。

 

  

特殊文字一覧
特殊文字 説 明
^ 行頭を表す。例えば「^abc」の4文字は、先頭が「abc」で始まる文字列を表します。文字列の途中に「abc」があってもマッチングしない。
$ 行の終わりを表す。例えば、「します。$」の4文字は、行の終わりに「します。」があるとマッチングする。
.ピリオドは、改行コード以外の任意の1文字とマッチする。「第 . 章」のように指定すると、「第1章」「第2章」などがマッチする。
[abcde] []内のいずれか1文字とマッチする。
[12345] []内のいずれか1文字とマッチする。
[1-9] [1から9のいずれかの数字とマッチする]
[a-z] aからzまでの半角小文字アルファベット1文字とマッチする。
[A-Z] AからZまでの半角大文字アルファベット1文字とマッチする。
[a-zA-Z] 半角のアルファベット1文字(大文字、小文字関係なく)とマッチする。,/td>
[^1-9] 1から9以外の任意の1文字とマッチする]
[^abcde] [ ]内の1文字以外とマッチする。
「または」を表す。「abc|1234」はabcという3文字か、1234の4文字にマッチする。
* 直前の1文字の0回以上の繰り返し文字とマッチする。a*は、a,aa,aaa,aaaaのような文字列とマッチする。
但し、文字が何もない状態でもマッチしてしまうので、意味がないかもしれない。
+ 直前の1文字の1回以上の繰り返し文字とマッチする。abc+は、abc,abcc,abcccなどにマッチする。
? 直前の文字の0回または1回だけの登場を表現する。abc?は、ab,abcとマッチする。
\ メタ文字の直前に置き、メタ文字を通常の文字として扱う。\^,\+,\\のように2文字で表す。
{n} 直前の文字がn文字続く
記号 意味
^ 行頭
[0-9] 0から9までのいずれかの数字1文字
{7} 直前の文字が7文字続く
行の終わり

これらの特殊文字を使用して、正規表現「^[0-9]{7}$]をpreg_match関数のパターンとして指定します。このパターンを/で囲み、’/^[0-9]{7}$/’のように文字列で、関数に渡します。 
行頭から行の終わりまで、0から9までのいずれかの数字が7文字続くという意味になります。

郵便番号の入力プログラム(p-input.php)

郵便番号の出力プログラム(p-output.php)

正しく入力できた場合

郵便番号2250015が確認できました。

正しく入力しなかった場合

112-1は、正しい郵便番号ではありません。
郵便番号を御確認ください。

まとめ

 
正規表現に使用する特殊文字は、今回紹介した文字以外にもたくさんありますので、良く使用するものは、一覧表にまとめておくと便利です。

今回は、preg_match関数を使用して、もっとも一般的な郵便番号のパターンマッチングを紹介しましたが、パスワードなどのパターンマッチングにも使用することが可能です。

正規表現が作成できれば、preg_match関数を使用して、マッチング処理をおこなうプログラムを容易に作成することが可能です。

複雑なパスワードになると正規表現がすこし難しくなりますが、手始めに、簡単なパスワードなどでトライしてみてはいかがでしょうか。

【おすすめ記事】
【初心者歓迎】PHP学習で人気のプログラミングスクール
バックエンドエンジニアおすすめ!PHPの学習サイト9つ
PHPの本・参考書の評判

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ
ページ上部へ戻る