• ベストアンサー

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

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

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.1

この手のものをRFCに則ってやろうなんて言うと、とてつもない正規表現が必要になりますよ。 それからサンプルの最後は正しくないメールアドレスです。 簡易版でいいなら、単純ですが以下の感じではどうでしょうか。 この程度のものがどんな意味があるかは分かりませんが…。 if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) return 1; 正確に調べるにはEmail::ValidかMail::CheckUserなどを使って、メールアドレスが有効化を確認する方が正しい処理です。

関連するQ&A

  • 正規表現でブロックしたい

    正規表現で下記のパスワードをブロックしたいのですが、どうすれば良いですか。 ・8文字以上の半角英数字(記号入り) ・パスワード中に必ず、英字、数字、記号を1文字を入れる

  • メールアドレスの正規表現について

    こんにちは。 メールアドレスの正規表現について調べていたら、  \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* という正規表現が色々なサイトで見つかりました。 素人には何が何だか分からないのですが、この正規表現を素人でも わかる文章で表現するとどんな内容になるのでしょうか? 例:アドレスの部分は英数字記号で、アットマークで区切られて・・ という感じです。 よろしくお願いいたします。

  • 正規表現について

    正規表現について質問をさせていただきます。 VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが どうしてもうまくいきません。 チェックしたい文字は A(半角アルファベット大文字1文字)または AAA(半角アルファベット大文字3文字)または (AAA)(半角カッコつき半角アルファベット大文字3文字)で 上記3パターン以外はエラーとしたいと思っています。 パターンは下記のように作成したのですが "(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})" A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。 パターンをどのように作成すればよいか教えて下さい。 よろしくお願いします。

  • phpの正規表現について

    phpの正規表現についてです。 よく入力されたメール・パスワードを判定するのに正規表現で判定させますが、今回の指定する条件は… ・半角英数、0~9の組み合わせ ・使用禁止文字は \ ' @ [ ] の5つ ・入力は8文字以内 例 if(ereg("^[0-9a-z\!\"\#\$\%\&\(\)\=\-\~\|\{\}\;\:\+\*\,\.\/\<\>\?\_]{1,8}$", $pw)){ 記号の意味でよくわからないのがあるのですが、 { }は文字数を指定するものでよろしいのでしょうか? {1,8} は1~8文字までという意味? \が入ると認証が通ってしまってい、困っています。 ユーザーの入力    MySQLの取得結果 例 123\        → データが入らない   \123        → 123   \\123        → \123   123\123      → 123123   \\          → \ といった不具合になってしまい、MySQL側でも入力されたデータと異なったデータが入ってしまいます。\が入っても認証されないようにするにはどうすればいいんでしょうか? 正規表現の参考にしたサイトは http://itbtech.itboost.co.jp/php/php_06.php です。アドバイスよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現

    strutsのバリデータでmaskのみで 以下の条件を正規表現を使ってあらわしたいのですが 使用可能文字  半角英数字 @ - _ . 条件  @ _ - . 同一文字の連続使用は不可。  先頭と最期は半角英数字のみ。  全部の文字数は3文字以上30文字以内。 aaa@aaa OK aaa@_-a OK aaa@@_a NG a@@@a NG @マークの連続使用不可は↓でできたのですが、 ^[a-zA-Z0-9]([a-zA-Z0-9]+@?){1,30}[a-zA-Z0-9]$ _ . - の条件を加えるとうまくいきいません。。 よい方法がございましたらご教授ください!!

  • 正規表現でIパスワードの作成内容をチェック

    PHP初心者です。 特に正規表現は、あまり良く分かりません。 単一の条件は、なんとなく分かるのですが・・・よろしくお願いします。 ユーザーに任意のパスワードを作ってもいたいのですが、あまり簡単な文字列では良くない事から、入力された文字列にチェックをかけたいです。 条件は、半角英数で6文字以上、大文字小文字は区別します。 (記号は不可) また、必ず数字と英字をどちらか2文字以上混在させたいのですが、チェックをかける時にどの様な正規表現のパターンを組めばよいのか分かりません。 教えて頂けないでしょうか、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 正規表現による文字列のチェックについて

    文字列の入力チェックで困っています。 入力された文字列が以下の文字のみで構成されているか、正規表現でチェックするにはどうすれば良いか教えてください。 できれば一発でチェックしたいです。 ・全角(漢字、ひらがな、かたかな)※英数字を含め、左記以外の全角は使用禁止 ・半角英数字 ・半角記号(「-」「.」「:」「*」「&」)※後から追加変更される可能性がある Java(UTF-8)とJavaScript(Shift-JIS)それぞれで対応できる方法をお願いいたします。

  • 正規表現

    半角英数字で、最初に数字が付く文字列に対してfalseを出す正規表現はどのように行えばよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現についてお教え下さい

    正規表現についてお教え下さい。 )以外の全ての文字列(改行・Tab・空白等含む)の1回以上の繰返しという記述は正規表現ではどのような記述になるでしょうか? NoEditorで下記のような条件でgrepしようとしたのですがうまくいきません。 [[^[^\)]] \t\n\r\f]+ 具体的には下記のような5行があった場合、以下のような条件で1、2、3行目を抽出できるということを想定しています。 条件:AAA )以外の全ての文字列の1回以上の繰返し \) ※現状の条件の記述はAAA[[^[^\)]] \t\n\r\f]+\) 1行目 AAAあ(aaa) 2行目 AAA あ(aaa) 3行目 AAA あ 4行目 (aaa) 5行目 AAA)

  • PHPの正規表現eregの使い方

    PHP初心者です。 eregを使った入力チェックをしたいのですが、思うように処理できません。 入力は半角英数字のみを受け付け、その他の入力の場合はエラー処理を行いたいと思ってます。 if (!ereg("^[0-9]+$", $user)) { // 半角英数字以外はエラー処理 } 参考のものがあったのでその通りやってみましたが、全角文字も受け付けてしまい困っています。 記号の意味もよくわかりません。 また、これに加え5文字以上8文字以内という条件も付けたいです。 よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう