- - PR -
正規表現でメルアドのチェック
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-24 10:57
こんにちは
よろしくお願いします。 メルアドを正規表現で、おかしいもの(英数字._-以外の文字がある、@が2個以上ある) をチェックしようとしています。 Regex regex = new System.Text.RegularExpressions.Regex( @"[\\w\\-\\.]+@([\\w\\-]+\\.)*([\\w\\-]+$)" ); と書いてみたのですが、 メルアドの最初から@までの部分のチェックが上手く行われません。 @のうしろについては、 英数字以外の文字("#$%&'()=~)等が入っていたら、一致しないのですが、 @の前の文字列に英数字以外の文字が入っていたり、 @が2つある(連続しているのは除く[@@])と、一致してしまいます。 例) regex.IsMatch("メールアドレス") aaa#dsa@dsa ← true が返ってくる aaa"@saf.asd ← true が返ってくる aa@sd@fs ← true が返ってくる aa@@fd ← false が返ってくる[正常] aa@aa#.sdf ← false が返ってくる[正常] aa@.sad ← false が返ってくる[正常] 正規表現の@より前の部分( [\\w\\-\\.]+@ )がおかしいのだと思うのですが どのように修正すればいいでしょうか? よろしくお願いします。m(_ _)m P.S. \\w\\-等に \\が2つ付いていますが、1つだけ付けています。 1つだけ表示する方法がわかりませんでした。m(_ _)m 開発環境 WinXPPro、C#、VS.NET2003 | ||||
|
投稿日時: 2004-06-24 11:58
すみません。
解決しました。 Regex( @"( ^[¥w¥-¥.]+)@([¥w¥-]+¥.)*[¥w¥-]+$" ); とすれば、上手く行きました。( 「 ^ 」を追加しました。) 失礼しました。m(_ _)m | ||||
|
投稿日時: 2004-06-24 12:43
どもです。がると申します。
微妙に余談なのですが。 メルアドレスのユーザ名部分(@の前)ですが。 実は、@や<>など、_−以外の記号も使うことができてしまいます。 一応、RFC的にも正しいメールアドレスです。困ったことに。 ちっと参考までに。 | ||||
|
投稿日時: 2004-06-24 13:02
余談ついでに。
「メールアドレスの正規表現」だそうです。 #RFC821、822 がobsoleteになった事でどう影響するのかまでは知りません 予め限られたパターンのアドレスしか対応しないなら、それ程気にする事でもありませんが。 | ||||
|
投稿日時: 2004-06-24 14:20
がるがるさん、前川さん
返信ありがとうございます。
ほ、ほんとに困ります>< 「メールアドレスの正規表現」のPerlは、・・・。>< RFCには、目をさっとしか通していないんですが、 私の技術では無理そうなので、 なにかパターンを決めようと思います。 ありがとうございました。 また、よろしくお願いします。m(_ _)m |
1