- - PR -
e-mailアドレスの正規表現
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-03-01 12:23
こんにちは。
e-mailアドレスの正規表現ですが色々調べたのですが結論的には 完全は難しのでしょうか? e-mailで使える文字列の規程について良い参考ページなどご存知 であればご教授下さい。 なお、現状以下の様な正規表現ですが・・ public final static String s_REGEXEMAIL = "\\p{ASCII}+\\@" + "([-_a-zA-Z0-9]+\\.)*[-_a-z]+|" + "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"; Pattern p_Ptn = Pattern.compile(StringCtrl.s_REGEXEMAIL); ちなみにHTTPアドレスは以下でしょうか? "http://" + "([-_a-zA-Z0-9]+\\.)*[-_a-z]+|" + "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" おかしいでしょうか?どなたか経験がございましたらご指摘下さい。 | ||||
|
投稿日時: 2003-03-01 12:49
完全かどうかはすべてのシステムが規約にしたがっているかに
よっちゃうでしょうから、完全じゃないでしょうね。 メールアドレスについてはRFC822、URIについてはRFC2396に 書いてあるようですのでそのあたりを参照してはいかがでしょうか。 (書かれた正規表現はぜんぜん見てませんのであしからず) | ||||
|
投稿日時: 2003-03-01 13:02
そうですね。よく考えたら全てのシステム(サーバアプリケーションなど)
がRFC822やRFC2396に完全対応しているとは限りませんよね? そういった意味ではある程度の割り切りの概念で問題無いと言う事ですね。 ありがとうございます。 ちなみにRFC822、RFC2396は検索して調べてみたいと思います。 割り切りレベルまでも達していないかもしれないので。。 | ||||
|
投稿日時: 2003-03-01 13:13
Perl メモ
http://www.din.or.jp/~ohzaki/perl.htm がとっても参考になります。 | ||||
|
投稿日時: 2003-03-01 15:37
こんにちは。Perlメモ拝見いたしました。
目が飛び出るほど長い正規表現なのでびっくりしてしまいました。 でも割り切りで考えても現在の私の正規表現では不足がたくさんあ りますね。。ありがとうございますm(__)m でも完全を目指す時には嫌でもあの長い正規表現を使わなければい けないのでしょうか。。 とはいいつつもよく見ると携帯のメールアドレスなんかはRFC規程 と違う内容だったりと、やはりシステムに依存する部分が多そうなの である程度の割り切りが現状の正解に思えます。 みなさんはどの様にお考えでしょうか? [ メッセージ編集済み 編集者: matu 編集日時 2003-03-01 15:47 ] | ||||
|
投稿日時: 2003-03-01 16:12
>目が飛び出るほど長い正規表現なのでびっくりしてしまいました。
何か勘違いしてますね、"メールアドレスの正規表現"の項を最後まで 読みましたか? 必要なのは最後のほうに書かれている正規表現で それは10行くらいのものです。 | ||||
|
投稿日時: 2003-03-01 16:24
最後は10行ですね。ちなみに、この様な長い正規表現を使う事による 処理のレスポンスへの影響が少し気になるので私はある程度割り切っ て考えることにしました。 入力に対する責任分解点をRFC規程ではなく人の認知レベルであると 考える為です。(WEBシステムの一部入力処理なので) ケースにもよるとは思うのですが。。 | ||||
|
投稿日時: 2003-03-01 16:45
いま日本語ドメインもありますよね。
仮に完璧に「文字列」レベルでチェックできても、 nobody@invalid.foo のような「実在しない」メルアドに関しては手の打ちようがないですよね。 ユーザーの入力責任ということでいいと思いますけど。 リアルの住所だってそこまでチェックできない/しないですよね。 ユーザーの入力した「シティハイツ503」(号室)が本当に存在するか どうかなんてわからないし。 電話番号・FAX番号も同じですよね。 |