• 締切済み

メールアドレスのチェック

質問させてください。 メールアドレスの正当性チェックを作成してみようと思いました。 (1)"@"より左側の部分は3桁以上16桁以内 (2)使用可能文字は、英小文字,数字,'-', '.', '_' (3)先頭文字は英小文字のみ (4)先頭・末尾文字に'-', '.', '_'は使用不可 (5)数字のみ'_', '.', '-'のみのアドレスはだめ --------------------------------------- $value = "xxxxxx@****.com"; $flg = 0; $address = split("@", $value); //****(1)****// if((strlen($address[0]) > 16) || (strlen($address[0] < 3)){ $flg = 1; } if($flg == 0){ echo("このアドレスはつかます"); }else{ echo("このアドレスはつかえません"); } ------------------------------ と、チェックの(1)しかわからないのですが、 (2) ~ (5)のアドバイスを下さい。 宜しくお願い致します。

みんなの回答

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.4

Perl 互換の正規表現が使えるハズなのに、思ったとおりに動かない罠。 私は PHP でのメアドチェックは以下のようにしています。 if ( ereg( "^[-._a-z0-9]+@[-.a-z0-9]+\.[a-z]{2,4}$", $email ) ) { echo "$email : OK"; } else { echo "$email : NG"; } 多分もっとスマートで細かいチェックが出来る正規表現があるんでしょうねぇ。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

こんな感じで如何でしょうか? /*----------*/  $addr = $address[0];  if( ereg("^[a-z][0-9a-z._-]{2,15}$", $addr) &&    !ereg("[_.-]$", $addr) &&    ereg("[^0-9]", $addr) ){   echo "Pass!!\n";   $flg = 1;  } /*----------*/ 「正規表現」というモノを覚えると、こういったもののチェックが楽にできます。

  • x-game
  • ベストアンサー率42% (80/189)
回答No.2

if (ereg("^[0-9a-z\-\.\_]+$", $address)) ↑ではだめですか? ^は先頭 +は文字列の繰り返し $は最終文字 なので,1文字目から最後の文字まで[]内のチェックをするという意味になります。

  • x-game
  • ベストアンサー率42% (80/189)
回答No.1

eregを使うとうまくチェックをかけることができます。 下の2つのサイトを使うとできると思いますよ。 http://itb-tech.itboost.co.jp/php/php_06.php http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

jyopper
質問者

お礼

返信有難うございます。 なんとか、(2), (3), (4)の作成ができました。 (5)がどうしてもわかりません。 if(ereg("0-9a-z\-\.\_", $address)){ echo("OK"); }else{ echo("NO"); } としてるんですが、 $address = "freaf827398r---/...__adf829"; でもOKになってしまいます。 どこかおかしいですか?

関連するQ&A