• ベストアンサー

メールアドレスの正規表現

メールアドレスの正規表現 正規表現の勉強をしています。下記のURLのメールアドレスの正規表現の一部が理解できません。 http://hodade.adam.ne.jp/seiki/page.php?s_mail ^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ この中の「[a-zA-Z]{2,4}$」の部分がわかりません。 行末が英文字2以上4以下というのは何を表しているのでしょうか? なぜ2以上4以下になるかが理解できません・・・ 宜しくお願いします!!

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

  • ベストアンサー
  • ariseru
  • ベストアンサー率56% (930/1659)
回答No.1

>行末が英文字2以上4以下というのは何を表しているのでしょうか? メールアドレスの末尾に付く、.comとか.jpなどの部分を表しています。 >なぜ2以上4以下になるか メールアドレスの末尾の部分はトップレベルドメインと呼ばれるもので、世界共通の仕様で決められたものが使われています。 そして、一般的なメールアドレスで使われるトップレベルドメインの文字数というのは2~4文字なので、2文字以上4文字以下の長さになるような正規表現が使われているんだと思います。 ちなみに、トップレベルドメインで最も長いものは6文字みたいですね。 博物館とか美術館用に使われる.museumとか、旅行業向けの.travelなどが一番長いものっぽいです。

mellow91
質問者

お礼

詳しいご解説ありがとうございます。メールアドレスの正規表現は作者が作成された当時は4文字がマックスだった可能性があるということでsね。よく理解できました!!

関連するQ&A

  • 秀丸の正規表現

    秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・

  • 正規表現

    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]$ _ . - の条件を加えるとうまくいきいません。。 よい方法がございましたらご教授ください!!

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

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

    • ベストアンサー
    • PHP
  • 正規表現で行ではなく単語のみをファイル化したい

    正規表現で電話やアドレスを検索するとその行丸々表示されてしまいます。 [例]'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' [結果] 何々、xx@aa,bb,cc 正規表現の単語部分(何々、を除いた部分)だけを取り出すにはどうすればいいのですか お願いします。

  • 正規表現について

    HTMLファイルを読み込み、特定の文字列にリンクを付けて出力したいのですが上手くいきません。 例: <img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に正規表現を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。  ↓正規表現をキーワードにしてリンクを付けたい。 正:<img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 誤:<img src="./seiki_hyougen.gif" alt="<a href="seiki_hyougen.html">正規表現</a>についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html"><a href="seiki_hyougen.html">正規表現</a>の詳しい説明</a>をクリックして下さい。 尚、下記URLのサンプルを参考にしてスクリプトを作成しています。 http://php.oss.eznetsols.org/manual/ja/function.preg-split.php $r = preg_split('((\/a>)|(<a))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($r); $i++) { if ($r[$i] == "<a") { $i++; continue; } $r[$i] = preg_replace( "/(正規表現)/i", "<a href='seiki_hyougen.html'>\\1</a>", $r[$i] ); } return join("", $r); この(正規表現)の部分で上手い正規表現を使えばalt="×××"の中にリンクタグが入らないようにできるのでは?と思っているのですが・・・。 どうか、良い方法を教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • どなたかこの正規表現を変更してくれませんか?

    正規表現の素人で困っています。 s/(http:\/\/[0-9A-Za-z]+[\-\.\/0-9A-Za-z_~]*[\/0-9A-Za-z]+)([\x80-\x9f\xe0-\xfc].)?/<A HREF="$1">$1<\/A> という正規表現が「引数付きURLの引数部分(?より先)は無視する」 という内容になっていまして、?より先も含めるようにしたいのです。 現状だと以下のURLを例に http://test.japan.com/test.php?d=404861&c=c6 http://test.japan.com/test.php test.phpまでしか拾ってくれません。 どの様に書き換えればいいのでしょうか?

  • 正規表現で

    正規表現で 8文字以上、15文字以内で1文字以上の英語(大文字小文字どちらか一方で可)と数字が含まれている表現を考えているのですが、思いつきません。 [0-9a-zA-Z]{8,15} だと全て数字・英語でも通ってしまうので、困っています。 どなたか詳しい方、ご教授ください。

  • 正規表現

    正規表現で 数値と半角記号(!#$%()~|-^@[;],./`{+*}_)が入っているというものを表現したいのですが、、、 下記のような正規表現をすると、エラーになってしまいます。何かよい方法はありませんか? ^[a-zA-Z0-9\-_!#$%()~|-^@[;],./`{+*}_]*$ 又、携帯電話のチェックをしたいのですが、 1文字以上の文字列があってというような処理にしたいのですが、何かよい方法はないでしょうか? ereg( "@docomo\.ne\.jp$", $email )

    • ベストアンサー
    • PHP
  • 正規表現で特定文字列を含む場合エラーにしたい

    メールアドレスのチェックの正規表現 ^[0-9A-Za-z~!#$%^&`*+;:"'?/|{}.=_-]+@(?=[0-9A-Za-z~!#$%^&`*+;:"'?/|{}.=_-]+$)(?!.*aaa.bbb.ccc.jp)(?!.*ddd.eee.fff.jp).*$ があるのですが、これに「00000@000000を含む場合エラーを返す」という設定を追加したいです。 色々試したのですが、上手くいかず、もしお分かりになる方いらっしゃいましたらご教授下さい。

  • 正規表現に詳しい方、教えてください。

    正規表現に詳しい方、どうか教えてください。 思うように動作してくれなくて困っています。 「Spam Mail Killer」というフリーソフトで (http://www.vector.co.jp/soft/win95/net/se225316.html) 正規表現でスパムメールかどうかの判断をさせたいのです。 (このソフトはBREGEXP.DLLを使っているそうです。) たとえば、 http://www.abcdef.com/deai.htm (このURLは架空のものです) のように「deai」を含むURLが書かれたメールにヒットするようにと思って、次のように書きました。 ##/(http://)[-/\.A-Za-z0-9]*(deai)[-/\.A-Za-z0-9]+/ しかし、これを実際にテストしてみると「deai」を含むメールにヒットしません。 ()を外すと、「deai」を含まないURLにもヒットしてしまいます。 自分でもそれなりに調べてみたのですが、どうにもお手上げです。 正規表現に詳しい方、どうかアドバイスをお願いします。