Weryfikacja adresu e-mail w aplikacji C # MVC 4: z lub bez użycia Regex [duplikat]
To pytanie ma już odpowiedź tutaj:
Mam aplikację internetową MVC 4 i muszę wprowadzić i zweryfikować niektóre adresy e-mail, bez wysyłania wiadomości e-mail na adres e-mail użytkownika.
Obecnie używam podstawowej weryfikacji e-mail regex z tym wzór:
[RegularExpression(@"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z",
ErrorMessage = "Please enter correct email address")]
Chociaż jest to Walidacja adresów e-mail, przechodzi [email protected] jako poprawny adres e-mail. Na razie mam walidację, która wymaga symbols @ symbols . symbole, gdzie symbole mogą być numeryczne / Alfabetyczne oraz ._- .
Potrzebuję bardziej standardowej walidacji e-mail dla mojej aplikacji MVC 4. Jak mam to zrobić?
6 answers
Potrzebujesz do tego wyrażenia regularnego. Zobacz Tutaj . Jeśli używasz. NET Framework4. 5, Możesz również użyć tego. Ponieważ jest zbudowany w. NET Framework 4.5. Przykład
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-05 12:53:01
Rozszerzenie na odpowiedź Ehsan ....
Jeśli używasz. Net framework 4.5, możesz mieć prostą metodę weryfikacji adresu e-mail za pomocą EmailAddressAttribute
klasa w kodzie.
private static bool IsValidEmailAddress(string emailAddress)
{
return new System.ComponentModel.DataAnnotations
.EmailAddressAttribute()
.IsValid(emailAddress);
}
Jeśli rozważasz REGEX, aby zweryfikować adres e-mail, przeczytaj:
Wiedziałem, jak zweryfikować adres e-mail, dopóki nie przeczytałem RFC przez Phil Haack
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:17
Regex:
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
Lub możesz użyć po prostu:
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-05 12:54:00
Dlaczego po prostu nie użyć EmailAttribute
?
[Email(ErrorMessage = "Bad email")]
public string Email { get; set; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-05 12:53:22
nie.
Użyj regex do szybkiego sprawdzania zdrowego rozsądku, coś w rodzaju .@..
, ale prawie wszystkie langauges / frameworki mają lepsze metody sprawdzania adresu e-mail. Użyj tego.
Jest możliwe aby zweryfikować adres e-mail za pomocą wyrażenia regularnego, ale jest to długie Wyrażenie regularne. Bardzo długi.
I w końcu nie będziesz mądrzejszy. Będziesz wiedział tylko, że format jest prawidłowy, ale nadal nie wiesz, czy jest to aktywny adres e-mail. Na jedynym sposobem, aby się dowiedzieć, jest wysłanie e-maila z potwierdzeniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-16 17:16:37
Zaskakujące jest pytanie walidacji adresu e-mail ciągle pojawia się na tak!
Jedno często wymieniane praktyczne rozwiązanie znajdziesz tutaj: Jak znaleźć lub zweryfikować adres e-mail.
Fragment:
Zaletą mojego wyrażenia regularnego powyżej jest to, że pasuje do 99% obecnie używane adresy e-mail. Cały adres e-mail, który pasuje, może być obsługiwane przez 99% wszystkich programów pocztowych tam. Jeśli jesteś Szukam aby uzyskać szybkie rozwiązanie, wystarczy przeczytać następny akapit. Jeśli chcesz poznać wszystkie kompromisy i uzyskać wiele alternatyw dla wybierz z, Czytaj dalej.
Patrz ta odpowiedź na SO do omówienia meritum artykułu pod powyższym linkiem. W szczególności komentarz z dnia 2012-04-17 brzmi:
Do wszystkich skarżących: po 3 godzinach eksperymentowania z wszystkimi rozwiązaniami oferowana w tej gigantycznej dyskusji, jest to jedyna dobra java regex rozwiązanie mogę znaleźć. Żaden z rfc5322 nie działa na Java regex.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:05