Webで入力された情報のチェックを行うための正規表現のまとめです。
ちなみに、こちらのサイトでオンラインで正規表現のチェックができます。
簡単に評価できるので非常に助かってます。
カタカナ(全角)入力
preg_match( '/[ァ-ヶ]+/',$text )
このァかヶの範囲は文字コード表を見るとわかります。
※追記
この方法だとうまくいきませんでした。
ということで、mb_eregを使って、こういう方法で。
mb_regex_encoding("UTF-8"); mb_ereg( "^[ァ-ヶ]+$" , $message );
参考:全角カタカナにマッチする正規表現
※さらに追記(2008/11/11)
cakePHPのバリデーションでは上の方法でうまくいかない場合がありました。
それでこちらを参考に下記のようにしたらうまくいきました。
/^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/
メールアドレス
正確にはメールアドレスに完全に一致する正規表現は無いようです。(特に携帯電話キャリヤやプロバイダによってはRFCに定義されてないメールアドレスも許可してるところもあるようで。。)
かといって何でもOKにするのはまずいので大まかなチェックはさせないとだめですね。
ということでこちらを参考にOSSのPEARのメールチェック正規表現を参考にさせてもらいました。
preg_match("/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/", $text )
電話番号チェック(-付)
こちら参考にまず一般電話の正規表現。
preg_match( "/^(0(?:[1-9]|[1-9]{2}\d{0,2}))-([2-9]\d{0,3})-(\d{4})$/" , $message )
(これだけだと桁数に関係なく入力できてしまうので、番号の計が10桁の確認が別途必要なるようです。)
そして、携帯電話の正規表現。
preg_match( "/^0[57-9]0-\d{4}-\d{4}$/" , $message )
これは比較的シンプルですね。
郵便番号チェック(-付)
preg_match( "/^[0-9]{3}-[0-9]{4}$/" , $message )
これもシンプルです。
参考:郵便番号をチェックする正規表現
なお、PHPでUTF-8環境下で正規表現を行うには「mb_ereg」じゃなくて「preg_match」を使うのが吉といことがmb_eregよりもpreg_matchがいいの?に書かれていましたので注意しましょう。mb_eregでも、mb_internal_encoding、mb_http_output、mb_regex_encodingをUTF-8に指定すればうまくいくことがコメント欄にかかれてました。時間あれば実際に評価してみたいとおもいます。(当分難しいでしょうが。。)