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がありました……。