Používam tento
@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
regexp na overenie e-mailu
([\w\.\-]+)
- toto je pre doménu prvej úrovne (veľa písmen a číslic, tiež bodka a spojovník)
([\w\-]+)
- toto je pre doménu druhej úrovne
((\.(\w){2,3})+)
- a to je pre domény druhej úrovne (od 3 do nekonečna), ktoré obsahujú bod a 2 alebo 3 literály
čo je s týmto regexom zlé?
EDIT:nezodpovedá "[email protected]" email
TLD's ako .museum nie sú takto prispôsobené a existuje niekoľko ďalších dlhých TLD's. E-mailové adresy môžete overovať aj pomocou triedy MailAddress, ako vysvetľuje spoločnosť Microsoft tu v poznámke:
Namiesto použitia regulárneho výrazu na overenie e-mailovej adresy, môžete použiť triedu System.Net.Mail.MailAddress. Na určenie či je e-mailová adresa platná, odovzdajte e-mailovú adresu triede MailAddress.MailAddress(String) konštruktoru triedy.
public bool IsValid(string emailaddress)
{
try
{
MailAddress m = new MailAddress(emailaddress);
return true;
}
catch (FormatException)
{
return false;
}
}
Ušetrí vám to veľa af bolestí hlavy, pretože nemusíte písať (alebo sa snažiť pochopiť niečí iný'regex.
Mám výraz na kontrolu e-mailových adries, ktorý používam.
Keďže žiadny z vyššie uvedených nebol taký krátky ani presný ako ten môj, myslel som si, že ho tu zverejním.
@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"
+ "@"
+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$";
Viac informácií si môžete prečítať tu: C# - Email Regular Expression
Toto kontroluje aj platnosť RFC na základe syntaxe e-mailu, nie to, či e-mail skutočne existuje. Jediný spôsob, ako otestovať, či e-mail skutočne existuje, je odoslať e-mail a nechať používateľa overiť, že e-mail dostal kliknutím na odkaz alebo zadaním tokenu.
Potom existujú domény na vyhodenie, ako napríklad Mailinator.com a podobne. Tým sa nijako neoveruje, či e-mail pochádza z vyhodenej domény alebo nie.
Vyskúšajte si to na vlastnej koži:
public static bool IsValidEmailAddress(this string s)
{
var regex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
return regex.IsMatch(s);
}