Java email validation using regex

Email validation using regular expressions is common task which may be required in any application which seek email address as required information in registration step. Przypadków użycia może być więcej, ale nie o tym tutaj mowa.

Przejdźmy bezpośrednio do głównej dyskusji tj. do walidacji emaili w Javie używając wyrażeń regularnych.

Najprostszy regex do walidacji emaili

Regex : ^(.+)@(.+)$

Ten jest najprostszy i dba tylko o symbol '@’. Przed i po symbolu '@’ może znajdować się dowolna ilość znaków. Zobaczmy szybki przykład, aby zobaczyć, co mam na myśli.

Wyjście programu.

Ten wzorzec jest dostępny w klasie EmailValidator Common lang. Więc jeśli to pasuje do twoich potrzeb, możesz bezpośrednio użyć tej klasy.

Adding Restrictions on User Name part

Regex : ^+@(.+)$

W tym regexie dodaliśmy pewne ograniczenia dla części adresu email zawierającej nazwę użytkownika. Ograniczenia w powyższym regexie są następujące:

Przetestujmy kilka adresów email z powyższym regexem.

Wyjście programu.

Proszę zauważyć, że podobne ograniczenia można zastosować również do części nazwy domeny. Wtedy wyrażenie regularne będzie wyglądało tak.

^+@+$

Weryfikacja poczty elektronicznej w Javie dozwolona przez RFC 5322

Regex : ^+@+$

Ten przykład regex wykorzystuje wszystkie znaki dozwolone przez RFC 5322, które reguluje format wiadomości e-mail. Wśród dozwolonych znaków są takie, które stanowią zagrożenie bezpieczeństwa, jeśli są przekazywane bezpośrednio z danych wejściowych użytkownika do instrukcji SQL, takie jak pojedynczy cudzysłów (’) i znak potoku (|).

Powinieneś upewnić się, że unikasz wrażliwych znaków podczas wstawiania adresu e-mail do łańcucha przekazywanego do innego programu, aby zapobiec lukom w zabezpieczeniach, takim jak ataki SQL injection.

Wyjście programu.

Regex do ograniczania wiodących, końcowych lub kolejnych kropek w wiadomościach e-mail

Regex : ^+(?:+)*@+(?:+)*$

Zarówno część lokalna, jak i nazwa domeny mogą zawierać jedną lub więcej kropek, ale żadne dwie kropki nie mogą występować tuż obok siebie. Ponadto pierwszy i ostatni znak w części lokalnej i w nazwie domeny nie mogą być kropkami:

Wyjście programu.

Regex to restrict no. of characters in top level domain

Teraz zmodyfikujmy regex tak, aby nazwa domeny musiała zawierać co najmniej jedną kropkę, a część nazwy domeny po ostatniej kropce mogła składać się tylko z liter.

Powiedzmy, że nazwy domen są takie jak secondlevel.com lub thirdlevel.secondlevel.com. Domena najwyższego poziomu (.com w tych przykładach) musi składać się z dwóch do sześciu liter tylko.

Regex : ^+(?:+)*@(?:+)+{2,6}$

Wyjście programu.

Ten ostatni regex jest moją rekomendacją dla prostej walidacji emaili w javie. Proszę zauważyć, że walidacja emaili w java bez wyrażenia regularnego może być możliwa, ale nie jest zalecana. Gdziekolwiek musisz mieć do czynienia z wzorcami, wyrażenia regularne są twoim przyjacielem.

Możesz swobodnie używać tego regexu, jak również edytować go zgodnie z dodatkowymi potrzebami twojej aplikacji.

Szczęśliwej nauki !!!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.