• 締切済み

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

質問させてください。 メールアドレスの正当性チェックを作成してみようと思いました。 (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)のアドバイスを下さい。 宜しくお願い致します。

  • PHP
  • 回答数4
  • ありがとう数2

みんなの回答

  • 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

  • チェックボックスにメールアドレス?が…

    フォームにチェックボックスがあり、valueは一桁数値が固定で入っています。 そのチェックボックスのvalueが何故か一桁数値ではなく[半角英数@ドメイン名]という値で入ってきました。 私自身が操作してそうなったわけではないので、このような状態にどうやってなったのか、わかりません。 何か原因になりそうな事ってありませんか? 例えば、ソースが文字化けしてタグが正しく理解されず、チェックボックスがテキストフィールドとして表示されて文字入力が可能な状態になっていた、など 可能性がある事ならなんでもいいです。アドバイスお願い致します。 ※そのチェックボックスを使用してるのは一箇所のみで、名前が被っている個所も見当たりませんでした。 ※nameも含め、そのチェックボックスには2バイト文字は使用していません。

    • ベストアンサー
    • PHP
  • メールアドレスの入力チェックをして、正しくなければ戻る方法

    今、フォームを作っているところなのですが、 各必須事項は入力されていないと戻るように設定していますが、同じ形でメールアドレスもチェックしたいのですが、その際にxxx@***.xxxという正規の形でないと引っ掛かるようにしたいのですが、どうすればよいでしょうか?お分かりの方、是非教えてください。 よろしくお願いします。 -------------------------------------------- 現在のスクリプトは以下のような感じです。 これでは、大文字などでメールアドレスを入れられてもチェックを通してしまいますので。。 function check(){ if(document.FF.お名前_漢字.value == ""){ alert("お名前_漢字を入力してください"); document.FF.お名前_漢字.focus(); return(false); } if(document.FF.住所.value == ""){ alert("住所を入力してください"); document.FF.住所.focus(); return(false); } if(document.FF.email.value == ""){ alert("メールアドレスを入力してください"); document.FF.email.focus(); return(false); } return(true); } -------------------------------------------- そして送信ボタンを押すと、このスクリプトが働くように、 onSubmit="return check()" を設定しています。

  • バッチファイルのif文の中の計算結果について

    なぜ、結果1が7にならないのでしょうか? ---------- @ECHO OFF set flg=1 set value=2 if %flg%==1 ( set /a value=%value%+5 echo 結果1=%value% ) echo 結果2=%value% ---------- ◆実行結果 結果1=2 結果2=7 ----------

  • 入力メールアドレスの妥当性チェック

    フォームから入力された、 メールアドレスの妥当性のチェックを行いたいのですが、 「日本語であるか否か」のチェックを行うことはできないのでしょうか? アルファベット/数字だけのチェックであれば問題ないのですが、 メールには _.- などの文字も含まれているので、 メールアドレスとして妥当かどうか、正確なチェック方法、 正規表現方法はないものかどうか、教えてください。 他のサンプルソースで拾った if ( ereg("^[^@]+@[^.]+\..+", $mail) ) { $status = 1; //メールアドレスっぽい } else { $status = 0; //メールアドレスではなさそう } という記述ですと、日本語、たとえば あいうえお@mail.goo.ne.jp でもOKになってしまいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Niftyのメールアドレスについて。

     あるホームページで恋人募集をし,お金を払ってメールアドレスを教えてもらいました。それによれば@の後はnifty.ne.jpとなっていたのですが,返信されてきたメールではnifty.comとなっていました。@の前の3つの英文字,続く5桁の数字は一緒でしたが,返信されてきたメールではその前に「既定」という2文字がありました。 なんだか変!。niftyって加入するといくつのメールアドレスがもらえるのですか?。また「既定」って何を意味するのですか?。考えられる可能性を教えて下さい。

  • 整数かどうかチェックする

    テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。

  • JavaScript でメールアドレスのチェックをするには・・・?

    入力フォームで正しいメールアドレスが入力されたのかを確認するため、以下のようなJavaScriptを記述しましたが、動作しません。 関数FormCheckは動作するのですが、関数Checkは動作しません。 現状では、メールアドレスを入力する欄に「www」とだけ入力しても チェックされないので、その他の入力項目がきちんと入力できていれば メール送信されてしまいます。 どのようにすればこのCheck関数が動作するのかどなたか教えていただけないでしょうか?よろしくお願いします。 --------------------Java Script 部分--------------------------- <script language="JavaScript"> <!-- //必須項目のチェック function FormCheck(Form) { Error = new Array(); i = 0; // 氏名の入力チェック if ((Form["name"]) && (Form["name"].value == "")) { Error[i] = "氏名は必須項目です。"; i++; } // メールアドレスの入力チェック if ((Form["email"]) && (Form["email"].value == "")) { Error[i] = "メールアドレスは必須項目です。"; i++; } // 質問したい支店の選択チェック if ((Form["address"]) && (Form["address"][0].selected == true)) { Error[i] = "質問したい支店は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("未入力項目があるので送信できません。\n\n"+ErrorText); return false; } } // --> <!-- //メールアドレスチェック var mail; function Check(){ mail = document.myform.email1.value; if(!mail.match(/.*@.*\..*/i)){ alert("メールアドレスが不正です。"); } } // --> </script> --------------------HTML 部分----------------------------------- <body> <table width="419" height="453"> <tr> <td width="732"> <form action="./cgi/test/sendmail.cgi" name="myform" method="POST" target="_self" onSubmit="return FormCheck(this);Check()"> <table width="481"> <!--氏名を入力 --> <tr> <td><strong>氏名</strong></td> <td><input type="text" name="name" size="30" maxlength="50"></td> </tr> <!--メールアドレスを入力 --> <tr> <td><strong>メールアドレス</strong></td> <td><input type="text" name="email" size="50" maxlength="60"></td> </tr> <!--支店選択 --> <tr> <td><strong>質問したい支店</strong></td> <td> <select name="address"> <option value="" selected></option> <option value="aaa@hoemail.com">A支店</option> <option value="bbb@hoemail.com">B支店</option> <option value="ccc@hoemail.com">C支店</option> </select> </td> </tr> </table> <!--送信・キャンセルボタン --> <center> <table> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </center> </form> </td> </tr> </table>

  • mailアドレスのチェック

    メールアドレスのバリテーションチェックをしたいですが、 チェック項目:入力されたメールアドレスは@の前後1文字以上、不正記号がなければtrue 下記のような書き方は間違ってるのでしょうか? ↓↓↓↓↓↓↓↓バリテーションチェック内容↓↓↓↓↓↓↓↓ function validateMailAddress(arg){ wmail = arg; wnum = Number(wmail.indexOf("@")); if (!validateMinNumber(wmail,1)) { return false; } else { if (wnum == -1) { return false; } else { if (wmail.match(/[^\w\!\#\$\%\&\\\(\)\*\+\,\_\.\/\:\;\<\=\>\?\@\[\]\^\~\-\`\{\}\・\。\、\|]+/)){ return false; } else { return true; } } } } 間違え点をご指摘頂けば、ありがたいです。よろしくお願いします。

  • ラジオボタンのチェックの付け方。

    sizen.csvというファイルがあります。 中身は ----- umi,海 yama,山 mizuumi,湖 ike,池 mura,村 ----- です。 このcsvファイルをsizen.phpに読込んで ラジオボタン使用の設問を作りたいと思っております。 プログラムは・・・ <form action="area.php" method="POST"> <?php $file=file("sizen.csv"); for($i=0;$file[$i];$i++){ $data=explode(",",$file[$i]); echo"<input type='radio' name='sizen' value='".$data[0]."'>"; echo"$data[1]<br>"; } ?> <input type="submit" value="次へ"> とできたのですが、チェックがついていません。 先頭にチェックボタン(今回の場合は海の選択肢に最初からチェックを付けたい)を付けたいのですが、どういう方法があるのでしょうか? if文を使って <form action="area.php" method="POST"> <?php $file=file("sizen.csv"); for($i=0;$file[$i];$i++){ $data=explode(",",$file[$i]); if($data[0]==umi){ echo"<input type='radio' checked name='sizen' value='".$data[0]."' >"; echo"$data[1]<br>"; }else{ echo"<input type='radio' name='sizen' value='".$data[0]."'>"; echo"$data[1]<br>"; } } ?> <input type="submit" value="次へ"> とすればできるのですが、 sizen.csvファイルの中身をよく変える為、 if($data[0]==umi){・・・・ という風に、$data[0]==umiのように固定はできません。 この方法を使わずに、ラジオボタンのチェックを いつも選択肢の先頭に付けるにはどのような方法があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 電話番号の入力チェック

    ハイフン付きの電話番号のチェックをしようとしています。いろいろ調べていますがうまくいきません。5桁までの半角数字-5桁までの半角数字-5桁までの半角数字という書式のチェックを考えています。 if (ereg("^[0-9]{1,5}-?[0-9]{1,5}-?[0-9]{1,5}$", $str )) { return true; } else { return false; } で中途半端になってチェックされます。 間違っているのか?他に書き方があるのか?教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • PHP