web-dev-qa-db-ja.com

C#MVC 4アプリケーションでの電子メールアドレス検証:Regexを使用する場合と使用しない場合

MVC 4 Webアプリケーションがあり、ユーザーのメールアドレスにメールを送信せずに、いくつかのメールアドレスを入力して検証する必要があります。

現在、私はこのパターンで基本的な正規表現のメール検証を使用しています:

[RegularExpression(@"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z",
        ErrorMessage = "Please enter correct email address")]

これは電子メールアドレスを検証しますが、1 @ 1.1を有効な電子メールアドレスとして渡します。今のところ、シンボル@symbolsを必要とする検証があります。記号は、数字/アルファベットおよび._-にすることができます。

MVC 4アプリケーションには、より標準的な電子メール検証が必要です。それ、どうやったら出来るの?

22
dlght

これには正規表現が必要です。 こちら を見てください。 .net Framework 4.5を使用している場合は、 this も使用できます。 .net Framework 4.5に組み込まれているため。例

[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
75
Ehsan

Ehsan's Answer ....で展開.

.Net framework 4.5を使用している場合は、コードで EmailAddressAttribute Class を使用して電子メールアドレスを確認する簡単な方法を使用できます。

private static bool IsValidEmailAddress(string emailAddress)
{
    return new System.ComponentModel.DataAnnotations
                        .EmailAddressAttribute()
                        .IsValid(emailAddress);
}

メールアドレスを確認するためにREGEXを検討している場合は、以下をお読みください:

RFCを読むまでメールアドレスを検証する方法を知っていました By Phil Haack

23
Habib

正規表現:

[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]

または、次を使用できます。

    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }
13
whoah

単にEmailAttributeを使用しないのはなぜですか?

[Email(ErrorMessage = "Bad email")]
public string Email { get; set; }
3
dav_i

しないでください。

.@..のような簡単な健全性チェックには正規表現を使用しますが、ほとんどすべての言語/フレームワークには電子メールアドレスをチェックするためのより良い方法があります。それを使用します。

正規表現を使用して電子メールアドレスを検証することはpossibleですが、長い正規表現です。 Verylong
そして、最終的にはあなたは賢者ではなくなります。 formatが有効であることしかわかりませんが、それがアクティブな電子メールアドレスかどうかはわかりません。確認する唯一の方法は、確認メールを送信することです。

1
SQB

電子メールアドレスの検証 の質問が絶えず出てくるのは驚くべきことです!

よくある実用的な解決策の1つを見つけることができます: 電子メールアドレスの検索または検証方法

抜粋:

上記の私の正規表現の長所は、今日使用されている電子メールアドレスの99%に一致することです。一致するすべての電子メールアドレスは、そこにあるすべての電子メールソフトウェアの99%で処理できます。簡単な解決策を探している場合は、次の段落を読むだけで済みます。すべてのトレードオフを知り、多くの選択肢から選択する場合は、先に進んでください。

上記のリンクの記事のメリットについては、 SOに関するこの回答 を参照してください。特に、2012-04-17日付のコメントは次のとおりです。

苦情を申し立てているすべての人にとって:この巨大な議論で提供されたすべてのソリューションを3時間実験した後、これが唯一の良いJava正規表現ソリューションです。 rfc5322のどれもJava正規表現では機能しません。

0
DavidRR