• ベストアンサー

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

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

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.1

私がかなり昔に書いた判定式です。 参考まで。 function is_mailaddr( $stream ) { if( preg_match( '/^[_a-zA-Z0-9-]+([\.\+_a-zA-Z0-9-]+)*@[a-zA-Z0-9]([_a-zA-Z0-9-])*(\.[_a-zA-Z0-9-]+)*(\.[_a-zA-Z0-9-]{2,})+$/i', $stream ) ) { return true; } else { return false; } }

Koji001
質問者

お礼

ありがとうございます。 実際に使わせていただいても構いませんでしょうか。 よろしくお願いします。

その他の回答 (2)

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.3

>実際に使わせていただいても構いませんでしょうか。 ご自由にお使いください :-)

Koji001
質問者

お礼

お礼が遅れてしまいました。 ありがとうございます。 使わせていただきます。

noname#24096
noname#24096
回答No.2

>正確なチェック方法 「正確な」=RFCに規定されている という意味でよいのでしょうか? (厳密な正規表現となると大変なことになりますが…) 参考 http://q.hatena.ne.jp/1130649169 また上記URLのリンク先 http://www.din.or.jp/~ohzaki/perl.htm#Mail にも記載がありますが、一部の携帯で使えてしまう irregular.@xxxxxx.ne.jp の@の前の「.」はRFCに適合しない不正なアドレスになります。 また「メールアドレスが正しいか否か」という意味では このような考え方もあります。 http://neta.ywcafe.net/000407.html

Koji001
質問者

お礼

ありがとうございます。 参考にさせていただきます

関連するQ&A

  • phpでメールアドレス入力の入力チェックについて

    phpでメールアドレス入力のファームを作成しようと思います。 aaaaa@aaaaa.ne.jp とか入ってくるとして、 どのような入力チェックが必要ですか? 最終的には送らないと分からないとしても、mail()関数が受け付けない文字列ぐらいは事前にはじきたいです。 「この関数で一発だよ」みたいなのがあるとか、 地道にこれとこれをチェックするのが一般的とか、 あと、 「info@日本語ドメイン.jp」みたいにメールアドレスに日本語ドメインってありえるのでしょうか? どなたかご教授下さい。

    • ベストアンサー
    • PHP
  • 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; } } } } 間違え点をご指摘頂けば、ありがたいです。よろしくお願いします。

  • PHPでメールアドレスをチェックする正規表現はどのように書いたらいいのでしょうか...

    PHPでメールアドレスをチェックする正規表現はどのように書いたらいいのでしょうか? ネットで検索して利用しましたがうまくいきませんでした。 例えば入力が aaa × aaa@ × aaa@s × aaa@s. × aaa@s.u ○ という正規表現が目標です もちろんRFCの基準に適応した文字列を考えています。 半角記号、半角英数字、半角英字がOKですよね・・。 教えてください。

    • ベストアンサー
    • PHP
  • メールアドレス入力チェック

    毎回初心者な質問で申し訳ないです。 Strutsを使ってフォーム作成中なのですが、Validatorではなくjavaの中でエラーチェックをしています。 入力の有無でのエラーチェックはできたのですが、メールアドレスチェックができません。 自分としては 「1文字以上の半角英数記号」@「1文字以上の半角英数記号」 じゃなかったらエラーを返すようにしたいと思い以下のように記述しました。 if (mail != "[\\d[a-zA-Z]*]+@[\\d[a-zA-Z]*]"){ errors.add("mail", new ActionMessage("errors.mail")); } 動かしてみると何を入力してもエラーがかえるようになってしまいました。 正しい記述をご存知の方、ご教授ください。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 2重でメール入力チェックをしたいのですが・・・

    只今、アンケートを実施しようと考えております。そこで、アンケート内容の未入力チェックとメールアドレスの再入力チェックを行いたいと思っております。メールアドレスを2回とも一致しているか確認したいのですが、思うように動きません。どなたか教えて頂けませんでしょうか。 ちなみに、1回目は通しで入力、2回目は@の前と後ろを分けて入力させたいのですが・・・。

  • 携帯アドレスの正規表現

    現在、携帯アドレスの正規表現を行っていますが、 どうもうまくいきません。 実際に正規表現をするのは@よりも前の文字列です。 現在下記のようにしますとひらがなもOKになってしまいます。 !ereg( "^[a-zA-Z0-9!#$%&*+/=?^_{|}~.-]+", $email ) 何かよい方法はご存知ないでしょうか?

    • ベストアンサー
    • PHP
  • フォームメールのメールアドレスのエラーチェック

    メールアドレスのエラーチェックで、 複数行+@+複数行で、 入力アドレスの中に、@マークの無い場合に エラーが出るようにするには、 どうしたらよいのでしょうか? unless ($email =~ /^[\w-]+@[\w-]/){ $errMsg .= ', e-mail'; $errNum++; $e_email = 1; } この方法ではうまくいかないのですが、 どなたかアドバイスをお願いいたします。

    • ベストアンサー
    • CGI
  • メールアドレスチェックの方法

    こんにちは。いつもお世話になります。 今回は、メールアドレスのチェックについて教えてください。 簡単な正規表現によるチェックは、いくつかのサイトで見かけるのですが、 もう少しアレンジしたくて投稿しました。 一発でチェックする正規表現より、まず原始的な方法で考えました。 1)@以下だけ考えます。 $pathmail = explode("@", $email); $dotcheck = explode(".", $pathmail[1]); この時のピリオドの回数ですが、現実に下記のようなものはありますか? xxx@yyy.ccc.aaa.yyy.jjj.ooo.com(.comはgTLDであれば何でもいいです) 僕がいままで出くわした実在するメールアドレスは、 @以下のピリオド数の最高が、xxx@yyy.zzzz.ne.jp と3つでした。 ■ 3つ以上のピリオドは存在しますか? 2)1の場合、サブドメインは、yyyだと思いますが、 サブドメインの法則といいますか、それをチェックする正規表現が あれば、教えて下さい。 特に英数字に囲まれたハイフン(-)が2つ連記される場合は存在しますか? まずは、これだけ教えて下さい。 どうか、よろしくおねがいします。

    • 締切済み
    • PHP
  • メールアドレスが正しいかどうかチェックする方法は?

    フォームから受け取ったメールアドレスが、正しいかどうかをチェックする方法について教えてください。 フォームから受け取ったアドレスが****@vodafone.ne.jpと誤記入されていたため、このアドレス宛にsendmailで送信しようとしたらエラー(Internal Server Error)になりました。(正しくは****@x.vodafone.ne.jp) 「存在しないメールアドレス」の場合は、送信後にuser unknownかhost unknownとしてUndeliveredになりますが、上記の場合、送信そのものができなかったようです。 aaaaaaaa@bbb.******.ne.jp、 aaaaaaaa@******.ne.jp で試してみたところ、同様にエラーになり、 aaaaaaaa@***.ne.jp では送信できました(当然Undeliveredになりましたが)。 「sendmailで送信するときにエラーになるパターン」というようなものがあるのでしょうか? エラーになる前に、メールアドレスが、正しくないという警告を出したいのですが、可能でしょうか? 現在は、メールアドレスに「半角英数と@以外が含まれている」か「@が含まれていない」と警告するようにしています。

    • ベストアンサー
    • CGI
  • メールアドレスのチェック

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

専門家に質問してみよう