cakePHPでの会員登録のバリデートとか。

会員登録の時なんか、必須入力だったり、パスワードの文字数なんかを指定するには、普通にモデルに

    public $validate = array(
        'email' => array(
        'notempty'=>array(
                'rule' =>array('notempty'),
                'message' => 'メールアドレスを入力してください。',
            ),
        'isUnique'=>array(
                'rule'=>'isUnique',
                'message'=>'そのメールアドレスは既に使われています',
        ),
     ),
        'password' => array(
          'notempty'=>array(
                'rule' => Array('notEmpty'),
                'message' => 'パスワードを入力してください。',
             ),
             
                'custom'=>array(
                'rule'=>array('custom','/^[a-zA-Z0-9]{6,}$/i'),
                'message'=>'パスワードは半角英数六文字以上で入力して下さい',
            ),
        ),

みたいな感じで書く。で、問題はメールアドレスかどうかを確かめる正規表現なんだけれども。
PHPerの正規表現のショボさは結構有名で、どれを参考にして良いか悩んだ。


ところが、http://blog.livedoor.jp/dankogai/archives/51189905.html
これをどっかで見て覚えていた俺、でかした!



/^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$/


と、なるらしい。ふむ。

正規表現に関してはまだまだ修行中。

とりあえず、ダンコーガイの頭を借ります。ありがとう。

追記・
リファレンス見てみたら、emailっていうそのまんまのValidateがありました……。