正規表現によるフォーム入力データの妥当性確認
公開日:2014年2月24日
最終更新日:2014年4月30日
正規表現とは文字列の形式を表現するための表記方法で、Webページではメールフォームなどでユーザーが入力した文字列の検証によく使われます。ここでは、お問い合わせや登録フォームに入力してもらう文字列の妥当性確認をする正規表現例を示します。
正規表現によるマッチングを行う関数preg_match
preg_matchは、正規表現によるパターンと入力した文字列がマッチしているか検証するPHPの関数です。
基本的な書式は、以下のようになります。
preg_match($pattern, $subject)
$pattern : 正規表現による文字列のパターン
$subject : 入力文字列
返り値 : マッチした場合は1、マッチしなかった場合は0、エラーが発生した場合はFALSE
正規表現の構文
パターンは、一対の区切り文字(例えばスラッシュ"/")で囲んで作成します。
構文の詳細は、下記ページを参照してください。
http://msdn.microsoft.com/ja-jp/library/cc392020.aspx
パターン例
全角カタカナのバリデーション
名前のフリガナを全角カタカナ、'ー'、全角スペースで入力してもらう場合は、以下のようにバリデーションをかけます。
1 2 3 4 |
$pattern = "/^[ァ-ヶー ]+$/u"; if (!preg_match($pattern, $subject) { $errorText = "全角カタカタで入力してください"; } |
電話番号のバリデーション
電話番号をハイフン(-)付きで入力してもらう場合は、以下のようにバリデーションをかけます。
1 2 3 4 |
$pattern = "/^0\d{1,4}-\d{1,4}-\d{4}$/"; if (!preg_match($pattern, $subject) { $errorText = "正しい電話番号を入力してください"; } |
郵便番号のバリデーション
郵便番号を、「xxx-xxxx」の形式で入力してもらう場合は、以下のようにバリデーションをかけます。
1 2 3 4 |
$pattern = "/^\d{3}-\d{4}$/"; if (!preg_match($pattern, $subject) { $errorText = "正しい郵便番号を入力してください"; } |
メールアドレスのバリデーション
メールアドレスの形式はRFCの規格で規定されていますが、これに準拠した正規表現は非常に難しく、バリデーションで使うには現実的ではありません。
従って、ここでは簡易的なチェックを行うパターンを示します。
1 2 3 4 |
$pattern = "/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/"; if (!preg_match($pattern, $subject) { $errorText = "正しい形式のメールアドレスを入力してください"; } |
もっと簡単に、「(@以外の繰り返し)@(@以外の繰り返し).(@以外の繰り返し)」でOKとするなら、以下のようにします。
1 2 3 4 |
$pattern = "/^[^@]+@[^@]+\.[^@]+$/"; if (!preg_match($pattern, $subject) { $errorText = "正しい形式のメールアドレスを入力してください"; } |
スポンサーリンク