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アプリケーションには、より標準的な電子メール検証が必要です。それ、どうやったら出来るの?
Ehsan's Answer ....で展開.
.Net framework 4.5を使用している場合は、コードで EmailAddressAttribute
Class を使用して電子メールアドレスを確認する簡単な方法を使用できます。
private static bool IsValidEmailAddress(string emailAddress)
{
return new System.ComponentModel.DataAnnotations
.EmailAddressAttribute()
.IsValid(emailAddress);
}
メールアドレスを確認するためにREGEXを検討している場合は、以下をお読みください:
正規表現:
[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; }
単にEmailAttribute
を使用しないのはなぜですか?
[Email(ErrorMessage = "Bad email")]
public string Email { get; set; }
しないでください。
.@..
のような簡単な健全性チェックには正規表現を使用しますが、ほとんどすべての言語/フレームワークには電子メールアドレスをチェックするためのより良い方法があります。それを使用します。
正規表現を使用して電子メールアドレスを検証することはpossibleですが、長い正規表現です。 Verylong 。
そして、最終的にはあなたは賢者ではなくなります。 formatが有効であることしかわかりませんが、それがアクティブな電子メールアドレスかどうかはわかりません。確認する唯一の方法は、確認メールを送信することです。
電子メールアドレスの検証 の質問が絶えず出てくるのは驚くべきことです!
よくある実用的な解決策の1つを見つけることができます: 電子メールアドレスの検索または検証方法 。
抜粋:
上記の私の正規表現の長所は、今日使用されている電子メールアドレスの99%に一致することです。一致するすべての電子メールアドレスは、そこにあるすべての電子メールソフトウェアの99%で処理できます。簡単な解決策を探している場合は、次の段落を読むだけで済みます。すべてのトレードオフを知り、多くの選択肢から選択する場合は、先に進んでください。
上記のリンクの記事のメリットについては、 SOに関するこの回答 を参照してください。特に、2012-04-17日付のコメントは次のとおりです。
苦情を申し立てているすべての人にとって:この巨大な議論で提供されたすべてのソリューションを3時間実験した後、これが唯一の良いJava正規表現ソリューションです。 rfc5322のどれもJava正規表現では機能しません。