カスタムValidation(メアドが入力された場合のみ書式チェック)
2007/03/21 | cakePHP
cakePHPに限ったネタではないのだが、メアドの書式チェックについてメモ。
とあるクライアントから入力フォームのメアドは任意入力の項目としてほしい、という依頼があった。単にvalidationをはずしてもいいのだが、後々活用できそうなので、試行錯誤してみた。
cakePHPでは”VALID_EMAIL”と指定することでメールアドレスの書式チェックをしてくれるが、未入力でもエラーになってしまう。よってこれを「未入力はOKで、かつ入力された場合のみ書式チェック」というふうに書き換える。
/(¥¥A(?:^([a-z0-9][a-z0-9_¥¥-¥¥.¥¥+]*)@([a-z0-9][a-z0-9¥¥.¥¥-]{0,63}¥¥.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)¥¥z)/i
デフォルトはこのような正規表現になっている。正規表現は苦手なのだが、なんとなく雰囲気で以下のように書き換えた。
/(¥¥A(?:^([a-z0-9][a-z0-9_¥¥-¥¥.¥¥+]*)@([a-z0-9][a-z0-9¥¥.¥¥-]{0,63}¥¥.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)¥¥z)|(¥¥A¥¥z)/i
うしろに”|(¥¥A¥¥z)”をつけただけ。なんとも安直だが、とりあえずこれで動いているのでよしとする。