私は現在、次の正規表現を使用するAsp.net、c#、Mvc2を使用してシステムを構築しています。
^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
これは、「有効な」電子メールアドレス形式を検証する電子メール正規表現です。私のコードは次のとおりです。
if (!Regex.IsMatch(model.Email, @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"))
ModelState.AddModelError("Email", "The field Email is invalid.");
正規表現は電子メールの検証には問題なく機能しますが、特に長い文字列が正規表現に渡されて無効である場合、システムはページを解決せずに「機能」し続けます。たとえば、これは私が渡そうとしたデータです。
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
上記の文字列により、システムは基本的にロックアップします。同じことをもっと簡単な方法で実現する正規表現を使用できる理由と可能性を知りたいと思います。私の目標は、たとえば次のような誤って形成された電子メールアドレスが渡されないことです。
host.@.host..com