正規表現

正規表現とは幾つかの文字列を一定の形式、規則で表現する物である。

郵便番号を入力するとき通常ならば半角英数字で入力するけれど、
多くの場合はお問合せフォームで前述に名前欄を全角ひらがなで入力していて
郵便番号欄に入力する時に、そのまま全角のまま入力しているパターンがあるのではないだろうか?

そのような文字列の規格が不揃いの情報をデータベースに納められないので、それをチェックするのが
正規表現」である。

正規表現のルール。

それでは先ほどの郵便番号を例にして正規表現チェックをしてみたい。

郵便番号は3ケタと4ケタの数字

まず正規表現に入れる文字の先頭と末尾に「/(スラッシュ)」を付け加える。
これは正規表現の範囲を示す役割で,<html>〜</html>と同じような物である。

/文字列/

次に範囲の中身に入れる文字の先頭に「^」と末尾「$」に正規表現チェックする文字の始まりと終わりを示す記号を付け加える。

/^文字列$/

まず最初の3桁と後の4桁をチェックするのに確認すべきことは

  1. そもそも文字列が数値か?
  2. 入力された文字列がちょうど3文字と4文字か?
  3. 3ケタ、4ケタの間の「ー(ハイフン)」かどうかを判断するには?

をチェックします。

文字列の値が数値かどうかのチェックは「\(バックスラッシュ)」と"d"と付ける。
"d"とはdecimal(10進法の)dという意味で。入力文字列が0~9の値かどうかをチェックするという意味です。

続けて、文字列が特定の数あるかどうかは{x}と記述し、"x"に特定の数が入ります。

そして「‐(ハイフン)」かどうかを判断するのも「\(バックスラッシュ)」を使います。

まとめるとこのようになります。

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

これが正規表現の形式です。
改めて説明すると

  1. \d{3}が最初の3桁数字。
  2. \-が間のハイフン。
  3. \d{4}が後の4桁数字。

をチェックするというフィルターになってます。

では次はこの正規表現とpreg_match関数を使って、フォームからの入力値がちゃんと
正しい形式になってるかをチェックしてみます。