Ověření e-mailu v Javě pomocí regexu

Ověření e-mailu pomocí regulárních výrazů je běžná úloha, která může být vyžadována v jakékoli aplikaci, která hledá e-mailovou adresu jako požadovanou informaci v kroku registrace. Případů použití může být více, ale to není předmětem této diskuse.

Přejděme přímo k hlavní diskusi, tj. k ověřování e-mailu v Javě pomocí regulárních výrazů.

Jednoduchý regex pro ověřování e-mailu

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

Tento je nejjednodušší a stará se pouze o symbol ‚@‘. Před a za symbolem ‚@‘ může být libovolný počet znaků. Podívejme se na krátký příklad, abychom viděli, co mám na mysli.

Výstup programu.

Tento vzor je k dispozici ve třídě EmailValidator společnosti Common lang. Pokud tedy vyhovuje vašim potřebám, můžete použít přímo tuto třídu.

Přidání omezení na část s uživatelským jménem

Regex : ^+@(.+)$

V tomto regexu jsme přidali některá omezení na část uživatelského jména e-mailové adresy. Omezení ve výše uvedeném regexu jsou:

Otestujme některé e-mailové adresy proti výše uvedenému regexu.

Výstup programu.

Upozorňujeme, že podobné omezení můžete použít i na část názvu domény. Pak bude regulární výraz vypadat takto.

^+@+$

Ověřování e-mailů v jazyce Java povolené podle RFC 5322

Regex : ^+@+$

Tento příklad regexu používá všechny znaky povolené protokolem RFC 5322, který upravuje formát e-mailové zprávy. Mezi povolenými znaky jsou některé, které představují bezpečnostní riziko, pokud jsou předávány přímo z uživatelského vstupu do příkazu SQL, například jednoduchá uvozovka (‚) a znak roury (|).

Měli byste dbát na to, abyste při vkládání e-mailové adresy do řetězce předávaného jinému programu citlivé znaky vynechali, abyste zabránili bezpečnostním dírám, jako jsou například útoky SQL injection.

Výstup programu.

Regex pro omezení počátečních, koncových nebo po sobě jdoucích teček v e-mailech

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

Místní část i název domény mohou obsahovat jednu nebo více teček, ale žádné dvě tečky se nesmí objevit těsně vedle sebe. Navíc první a poslední znak v místní části a v názvu domény nesmí být tečka:

Výstup programu.

Regex pro omezení počtu znaků v doméně nejvyšší úrovně

Nyní upravme regex tak, že název domény musí obsahovat alespoň jednu tečku a že část názvu domény za poslední tečkou se může skládat pouze z písmen.

Řekněme, že názvy domén jsou jako secondlevel.com nebo thirdlevel.secondlevel.com. Doména nejvyšší úrovně (.com v těchto příkladech) se musí skládat pouze ze dvou až šesti písmen.

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

Výstup programu.

Tento poslední regex je moje doporučení pro jednoduchou validaci e-mailů v Javě. Upozorňujeme, že validace e-mailů v javě bez regulárního výrazu je možná, ale nedoporučujeme ji. Všude, kde potřebujete pracovat se vzory, jsou regulární výrazy vaším přítelem.

Prosím, neváhejte tento regex použít i upravit podle dalších potřeb vaší aplikace.

Šťastné učení !!!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.