Java e-postvalidering med hjälp av regex

E-postvalidering med hjälp av reguljära uttryck är en vanlig uppgift som kan krävas i alla program som söker e-postadress som nödvändig information i registreringssteget. Det kan finnas fler användningsområden, men det är inte ämnet för diskussionen här.

Låt oss direkt hoppa in i huvuddiskussionen, dvs. att validera e-post i Java med hjälp av reguljära uttryck.

Enklaste regex för att validera e-post

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

Detta är enklast och tar bara hänsyn till symbolen ”@”. Före och efter @-symbolen kan det finnas ett obegränsat antal tecken. Låt oss se ett snabbt exempel för att se vad jag menar.

Programutgång.

Detta mönster finns i Common lang’s EmailValidator-klass. Så om det passar ditt behov kan du använda den här klassen direkt.

Lägga till begränsningar för användarnamnsdelen

Regex : ^+@(.+)$

I denna regex har vi lagt till vissa begränsningar på användarnamnsdelen av e-postadressen. Restriktioner i ovanstående regex är:

Låt oss testa några e-postadresser mot ovanstående regex.

Programutgång.

Bemärk att liknande begränsning du kan tillämpa på domännamnsdelen också. Då kommer det reguljära uttrycket att se ut så här.

^+@+$

Java e-postvalidering tillåten enligt RFC 5322

Regex : ^+@+$

Detta exempel på regex använder alla tecken som är tillåtna enligt RFC 5322, som reglerar formatet för e-postmeddelanden. Bland de tillåtna tecknen finns några som utgör en säkerhetsrisk om de överförs direkt från användarinmatning till ett SQL-meddelande, t.ex. det enkla citattecknet (’) och pipetecknet (|).

Du bör se till att du undviker känsliga tecken när du infogar e-postadressen i en sträng som skickas till ett annat program, för att förhindra säkerhetshål som SQL-injektionsattacker.

Programutgång.

Regex för att begränsa ledande, avslutande eller på varandra följande punkter i e-postmeddelanden

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

Både den lokala delen och domännamnet kan innehålla en eller flera punkter, men inga två punkter kan förekomma precis bredvid varandra. Dessutom får det första och sista tecknet i den lokala delen och i domännamnet inte vara punkter:

Programutgång.

Regex för att begränsa antalet tecken i toppdomänen

Nu kan vi ändra regexet så att domännamnet måste innehålla minst en punkt och att den del av domännamnet som följer efter den sista punkten endast kan bestå av bokstäver.

Domännamn kan till exempel vara secondlevel.com eller thirdlevel.secondlevel.com. Toppdomänen (.com i dessa exempel) får endast bestå av två till sex bokstäver.

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

Programutgång.

Denna sista regex är min rekommendation för enkel e-postvalidering i java. Observera att e-postvalidering i java utan reguljära uttryck kan vara möjligt, men det rekommenderas inte. Överallt där du behöver hantera mönster är reguljära uttryck din vän.

Du får gärna använda det här regexet och redigera det enligt din applikations ytterligare behov.

Hälsosamt lärande!!

Lämna ett svar

Din e-postadress kommer inte publiceras.