Kako provjeriti e-mail adresu s regularnim izrazima (Regex). Primjer HTML5, PHP, C#, Python i Java koda.
Gotovo svaki programski jezik danas podržava regularne izraze. Iako ih neki programeri ne vole, oni su zaista najbolja praksa jer obično izvršavaju funkcije poput validacije izuzetno brzo sa manje serverskih resursa. E-mail adrese su savršen primjer... gdje se mogu lako provjeriti kako bi se osiguralo da su pravilno formatirane.
Imajte na umu da validacija nije verifikacija. Validacija jednostavno znači da proslijeđeni podaci slijede standardni format koji je ispravno konstruiran. Neke zanimljive stvari o adresama e-pošte koje bi mogle biti propuštene nakon validacije.
Šta je e-mail adresa?
Adresa e-pošte, kako je definisano Internet Message Format (RFC 5322), sastoji se od dva glavna dijela: lokalnog dijela i dijela domene. Lokalni dio dolazi prije @
simbol i domenski dio dolazi iza. Evo primjera e-mail adrese: example@example.com
, gdje example
je lokalni dio i example.com
je domenski dio.
- lokalne – Lokalni dio adrese e-pošte može sadržavati kombinaciju alfanumeričkih znakova, tačaka, crtica, plus znakova i donjih crta. Obično se koristi za identifikaciju određenog poštanskog sandučeta ili naloga na serveru.
- područje – Domenski dio adrese e-pošte sastoji se od naziva domene i njegove najviše domene (TLD). Ime domene je niz znakova koji identifikuje server koji hostuje nalog e-pošte. TLD specificira tip entiteta odgovornog za ime domene, kao što je kod zemlje (npr
.uk
) ili generički domen najvišeg nivoa (npr.com
,.org
).
Iako je ovo osnovna struktura adrese e-pošte, pravila o tome šta čini valjanu adresu e-pošte su složena.
Koliko dugo može trajati e-mail adresa?
Danas sam morao malo kopati da bih je pronašao, ali jeste li znali koja je važeća dužina adrese e-pošte? Zapravo je razbijen na dijelove ... Local@Domain.com.
- Lokalno može imati od 1 do 64 znaka.
- Domena može sadržavati od 1 do 255 znakova.
To znači da bi – tehnički – ovo mogla biti važeća adresa e-pošte:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Pokušajte to uklopiti na vizit kartu! Ironično, većina polja adrese e-pošte ograničena je na 100 znakova na webu... što je tehnički pogrešno. Neki od drugih regularnih izraza koji se koriste za validaciju adresa e-pošte takođe traže trocifreni domen najvišeg nivoa, kao što je .com; međutim, nema ograničenja na dužinu domene najvišeg nivoa (npr. Martech Zone ima 4 cifre – .zona).
Regularni izrazi
RegEx je savršena metoda za testiranje adrese e-pošte zbog svoje programske strukture. Regularni izrazi se široko koriste u programskim jezicima i uređivačima teksta i često su integrirani u biblioteke ili okvire za obradu teksta. Podržavaju ih mnogi programski jezici, uključujući Python, Java, C# i JavaScript, između ostalih.
Standardizacija adrese e-pošte je daleko složenija nego što mislite. Kada je napisano u skladu sa standardom, evo pravog regularnog izraza za adresu e-pošte, kredit za Regexr:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Ovaj obrazac regularnog izraza odgovara osnovnom formatu adrese e-pošte, uključujući alfanumeričke znakove, tačke, crtice, znakove plus i donje crte u korisničkom imenu, nakon čega slijedi @
simbol, nakon čega slijedi naziv domene. Važno je napomenuti da će ovaj obrazac provjeriti samo format adrese e-pošte, a ne stvarnu postojanje adrese e-pošte.
HTML5 uključuje provjeru strukture e-pošte
Najlakši način da se osigura da je e-pošta važeća u skladu sa standardom je korištenje HTML5 polja za unos e-pošte:
<input type='email' name='email' placeholder='name@domain.com' />
Međutim, postoje slučajevi kada će vaša web aplikacija i dalje htjeti potvrditi adresu e-pošte i u pretraživaču kada se unese i kada se pošalje na vaš server.
Redovni izraz za ispravnu adresu e-pošte u PHP-u
Malo ljudi to shvata, ali PHP sada ima ugrađen RFC standard funkcija validacije filtera.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Redovni izraz za ispravnu adresu e-pošte u C#
Evo osnovne provjere e-mail adrese u C#
using System;
using System.Text.RegularExpressions;
public class EmailValidator
{
public static bool IsValidEmail(string email)
{
string pattern = @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$";
return Regex.IsMatch(email, pattern);
}
}
Praktična upotreba ove metode:
string email = "example@example.com";
if (EmailValidator.IsValidEmail(email))
{
Console.WriteLine(email + " is a valid email address.");
}
else
{
Console.WriteLine(email + " is not a valid email address.");
}
Redovni izraz za ispravnu adresu e-pošte u Javi
Evo osnovne provjere e-mail adrese u Javi
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator {
private static final Pattern VALID_EMAIL_ADDRESS_REGEX =
Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
public static boolean isValidEmail(String email) {
Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(email);
return matcher.find();
}
}
Praktična upotreba ove metode:
String email = "example@example.com";
if (EmailValidator.isValidEmail(email)) {
System.out.println(email + " is a valid email address.");
} else {
System.out.println(email + " is not a valid email address.");
}
Redovni izraz za ispravnu adresu e-pošte u Pythonu
Evo osnovne provjere e-mail adrese u Pythonu:
import re
def is_valid_email(email):
pattern = re.compile(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
return True if pattern.match(email) else False
Praktična upotreba ove metode:
email = "example@example.com"
if is_valid_email(email):
print(f"{email} is a valid email address.")
else:
print(f"{email} is not a valid email address.")
Redovni izraz za ispravnu adresu e-pošte u JavaScript-u
Ne morate imati previše složen standard za provjeru strukture adrese e-pošte. Evo jednostavnog načina korištenja JavaScripta.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Naravno, to nije u skladu sa RFC standardom, pa ćete možda htjeti provjeriti valjanost svakog dijela podataka kako biste bili sigurni da je valjan. Ovaj regularni izraz će biti u skladu sa oko 99.9% adresa e-pošte. Nije u potpunosti u skladu sa standardom, ali je koristan za gotovo svaki projekat.
function validateEmail(email)
{
var re = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;
return re.test(email);
}
Zasluge za neke od ovih primjera pripadaju HTML.form.guide.