2

電子メール文字列を検証しようとしていますが、C#で使用するすべてのパブリックオプションがまったく機能しないようです。例として、http://www.regular-expressions.info/emailにある正規表現を使用します。 .html、次のプロパティを使用してモデルを作成します。

[RegularExpression(@"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", ErrorMessage = "Please enter a valid email address.")]
    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "The Email address where we can reach you:")]
    public string Email { get; set; }

これは、そのWebサイトからの直接のコピーであるにもかかわらず、何らかの理由で常にエラーをスローします。正規表現の前に@パラメーターがありますが、これをC#で機能させるには、他に考慮すべき点がありますか?

4

2 に答える 2

4

小文字も許可する必要があります。あなたが持っているたびにあなたはA-Zそれをに変更することができますA-Za-z

また、サイトで説明されているように、この正規表現は一部の有効な電子メールアドレスを拒否することにも注意してください。たとえば、一例を挙げると、.museumトップレベルドメインからの電子メールアドレスを拒否します。

于 2012-06-03T21:23:29.567 に答える
0

すでに提供したリンクで参照されているように:

http://www.regular-expressions.info/email.html

RFC2822の電子メールアドレスに対して検証されると思われる正規表現は次のとおりです。

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

この正規表現では存在しないTLDが許可されますが、新しいTLDに遅れずについていくビジネスをしたい場合を除いて、この正規表現を使用することをお勧めします。

于 2012-06-04T02:30:16.720 に答える