2010-09-07 4 views
3

Можно создать дубликат:
What is the best regular expression for validating email addresses?Регулярное выражение для проверки подлинности электронной почты.

Я использую форму, попросить адрес электронной почты. Я использовал регулярное выражение для него как

.*@.*\..*

Но он не работает нормально для некоторых из моего тестового электронного идентификатора, как

dsrasdf @@@ [email protected]

Любой из них предоставляет мне регулярное выражение для проверки подлинности электронной почты в asp.net или я могу использовать для этого какой-либо другой метод.

Просьба представить свои предложения.

+0

Как правило: Подумайте, по крайней мере дважды, прежде чем использовать '.' в регулярных выражениях. Обратите внимание, что '.... @ ......' также соответствует вашему выражению. – Michael

+0

@Michael: В этом конкретном случае на самом деле имеет смысл иметь довольно свободную проверку. Фактические адреса электронной почты следуют очень сложным правилам, и обычно это не стоит усилий для создания слишком сложного (считывания ошибочного) регулярного выражения. Например, некоторые крупные поставщики freemail не допускают абсолютно корректный символ «+». Bam. –

+0

И все же, использование '.' должно выполняться только с осторожностью и в этом случае по-прежнему неправы. IMHO, эта проверка не является «слишком свободной» или «слишком строгой», поскольку строки не являются ни надмножеством, ни подмножеством реальных действительных адресов электронной почты. Это просто неправильно. – Michael

ответ

5

Лучше всего полагаться on the framework для такого рода вещей.

try { 
    address = new MailAddress(address).Address; 
} catch(FormatException) { 
    //address is invalid 
} 
+1

+1 Теперь это идея! – Bobby

+0

Хотя я бы сказал, что если вы используете .Net 4, я уверен, что более ранние версии не будут работать с различными типами действительных адресов электронной почты. –

+0

Прошу прощения, но этот фрагмент кода в порядке, так как .NET 2. Однако нужно поймать исключение. [http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx] – Vinzz

1

Я использую регулярное выражение для моей электронной почты валидаций (чувствительно к регистру):

^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$ 

Я не знаю, о жереха, но я думаю, что вы можете использовать его, как это.

0
^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z{2-4}|[0-9]{1,3})(\]?)$