Здравствуйте, whatever, Вы писали:
W>Задача — проверять правильность адреса электронной почты на этапе ввода, .Net Framework 3.5.
W>Казалось бы, всё просто. В справке к MSVS 2008 находим код:
W>W>bool IsValidEmail(string strIn)
W>{
W> // Return true if strIn is in valid e-mail format.
W> return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
W>}
W>
W>Проверяем адрес dприветd@dмедведd.ru — валидный! Ладно, кириллические домены уже вот-вот появятся, и пусть этот адрес будет валидный, но когда я пытаюсь создать экземпляр класса MailAddress, вылетает сюрприз:
W>System.FormatException: The specified string is not in the form required for an e-mail address.
W> at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName)
W> at System.Net.Mail.MailAddress.ParseValue(String address)
W> at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
W>В MSDN нашёлся другой код (исправленный в июле 2009, что навеяло надежду):
W>W>public static bool IsValidEmail(string strIn)
W>{
W> // Return true if strIn is in valid e-mail format.
W> return Regex.IsMatch(strIn, @"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
W>}
W>
W>Но результат тот же. Опыта работы с регулярными выражениями у меня нет, поэтому прошу помощи в отсеивании адресов с русскими буквами. Или правильнее будет вместо использования регулярных выражений пытаться создать MailAddress, и в случае исключения возвращать false?
зацени