今回は正規表現を使ってフォームに打ち込まれた郵便番号、電話番号、メールアドレスの値が正しいかどうかをチェックする方法を勉強してみたいと思います。

コード

<body>

<form action="index.php" method="post">
   郵便番号 <input type="text" name="pos"><br>
   電話番号 <input type="text" name="tel"><br>
   e-mail <input type="text" name="mail"><br>
   <input type="submit" name="submit" value="送信">
 </form>
 <?php
 	$error = '';
   if (isset($_POST['submit'])) {
     if (preg_match('/^\d{3}-\d{4}$/', $_POST['pos'])) {
       echo "郵便番号です。<br>";
     }else{  $error .= '郵便番号ではありません。<br>';}
     if (preg_match('/^0\d{1,4}-\d{1,4}-\d{4}$/', $_POST['tel'])) {
       echo "電話番号です。<br>";
     }else{  $error .= '電話番号ではありません。<br>'; }
     if (preg_match('/^.+@.+\..+$/', $_POST['mail'])) {
       echo "メールアドレスです。<br>";
     }else{  $error .= 'メールアドレスではありません。<br>';}
   }
   
   echo "$error";
   
 ?>

</body>

実行結果

このフォームに正しい郵便番号、電話番号を打ち込み、メールアドレスを打ち込まないでいると、次のような画面になります。

解説

それぞれ入力された郵便番号、電話番号、メールアドレスの形式が正しければ正しいと返されます。
もしも正しくなければ、エラーを返します。
正規表現パターンは通常「/」で挟みます。
プログラム上で¥が打てない場合もありますが、¥と\は同じ意味だと考えてください。
「^」は文字列の先頭を表し、最後の「$」は文字列の最後を表します。
「\d」は数値、「{n}」は直前の文字のn文字の繰り返しになります。まとめると郵便番号の部分は「先頭から、数値3文字、ハイフン、数値4文字で終わる文字列」という意味になります。
電話番号部分の「{n, m}」は「直前の文字のn文字以上m文字以下」という意味の表現になります。
次に、メールアドレスをチェック、、、
簡単な判断をしています。
「.」は任意の文字1文字にマッチします。
「+」は直前の文字の1文字以上です。
「\.」は、ドットそのものです。
ドットが正規表現で特別な意味を表すので、ドットそのものを表す場合はこのようにエスケープします。
まとめると「先頭から、任意の文字が1文字以上、次にアットマーク、次に任意の文字が1文字以上、次にドット、次に任意の文字が1文字以上で終わる文字列」という文字列を意味します。

以上

最終更新:2015年10月25日 13:45