Sähköpostiosoitteen vahvistaminen säännöllisillä lausekkeilla (Regex). Esimerkki HTML5-, PHP-, C#-, Python- ja Java-koodista.
Lähes kaikki ohjelmointikielet tukevat nykyään säännöllisiä lausekkeita. Vaikka jotkut kehittäjät eivät pidä niistä, ne ovat todella paras käytäntö, koska ne suorittavat tyypillisesti toiminnot, kuten validoinnin, erittäin nopeasti pienemmillä palvelinresursseilla. Sähköpostiosoitteet ovat täydellinen esimerkki… missä ne voidaan helposti tarkistaa ja varmistaa, että ne ovat muotoiltu oikein.
Muista, että validointi ei ole todentaminen. Validointi tarkoittaa yksinkertaisesti sitä, että välitetyt tiedot noudattavat standardimuotoa, joka on oikein rakennettu. Mielenkiintoisia asioita sähköpostiosoitteista, jotka voivat jäädä huomaamatta vahvistuksen yhteydessä.
Mikä on sähköpostiosoite?
Sähköpostiosoite, joka on määritetty Internet-viestimuodossa (RFC 5322), koostuu kahdesta pääosasta: paikallisesta osasta ja verkkotunnuksen osasta. Paikallinen osa tulee ennen @
symboli ja verkkotunnuksen osa tulee sen jälkeen. Tässä on esimerkki sähköpostiosoitteesta: example@example.com
, Jossa example
on paikallinen osa ja example.com
on verkkotunnuksen osa.
- paikallinen – Sähköpostiosoitteen paikallinen osa voi sisältää yhdistelmän aakkosnumeerisia merkkejä, pisteitä, yhdysmerkkejä, plusmerkkejä ja alaviivoja. Sitä käytetään yleensä tunnistamaan tietty postilaatikko tai tili palvelimella.
- Domain – Sähköpostiosoitteen domain-osa koostuu verkkotunnuksen nimestä ja sen ylätason verkkotunnuksesta (TLD). Verkkotunnuksen nimi on merkkijono, joka tunnistaa sähköpostitiliä isännöivän palvelimen. Aluetunnus määrittää verkkotunnuksen nimestä vastaavan yksikön tyypin, kuten maakoodin (esim
.uk
) tai yleinen ylätason verkkotunnus (esim.com
,.org
).
Vaikka tämä on sähköpostiosoitteen perusrakenne, kelvollisen sähköpostiosoitteen säännöt ovat monimutkaiset.
Kuinka kauan sähköpostiosoite voi olla?
Minun piti tehdä kaivaminen tänään löytääkseni sen, mutta tiesitkö, mikä sähköpostiosoitteen pituus on kelvollinen? Se on todella jaettu osiin… Local@Domain.com.
- Paikallinen voi olla 1-64 merkkiä pitkä.
- Verkkotunnuksessa voi olla 1–255 merkkiä.
Tämä tarkoittaa, että – teknisesti – tämä voi olla kelvollinen sähköpostiosoite:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Yritä sovittaa se käyntikorttiin! Ironista kyllä, useimmat sähköpostiosoitekentät on rajoitettu 100 merkkiin verkossa… mikä on teknisesti väärin. Jotkut muut säännölliset lausekkeet, joita käytetään sähköpostiosoitteiden vahvistamiseen, etsivät myös 3-numeroista ylätason verkkotunnusta, kuten .com; pituutta ei kuitenkaan ole rajoitettu ylätason verkkotunnukset (esim. Martech Zone on 4 numeroa – .zone).
Säännölliset lausekkeet
RegEx on täydellinen tapa testata sähköpostiosoitetta sen ohjelmallisen rakenteensa vuoksi. Säännöllisiä lausekkeita käytetään laajalti ohjelmointikielissä ja tekstieditoreissa, ja ne integroidaan usein tekstinkäsittelykirjastoihin tai kehyksiin. Niitä tukevat monet ohjelmointikielet, mukaan lukien Python, Java, C# ja JavaScript.
Sähköpostiosoitteen standardointi on paljon monimutkaisempaa kuin ymmärrät. Standardin mukaan kirjoitettuna tässä on sähköpostiosoitteen todellinen säännöllinen lauseke, luotto 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])?
Tämä säännöllinen lausekemalli vastaa sähköpostiosoitteen perusmuotoa, mukaan lukien aakkosnumeeriset merkit, pisteet, yhdysmerkit, plusmerkit ja alaviivat käyttäjänimessä, joita seuraa @
symboli, jota seuraa verkkotunnus. On tärkeää huomata, että tämä malli tarkistaa vain sähköpostiosoitteen muodon, ei todellista olemassaolo sähköpostiosoitteesta.
HTML5 sisältää sähköpostirakenteen validoinnin
Helpoin tapa varmistaa sähköpostin kelpoisuus standardin mukaisesti on käyttää HTML5-sähköpostin syöttökenttää:
<input type='email' name='email' placeholder='name@domain.com' />
Joskus verkkosovelluksesi kuitenkin haluaa vahvistaa sähköpostiosoitteen sekä selaimessa, kun se syötetään ja kun se lähetetään palvelimellesi.
Regex oikealle sähköpostiosoitteelle PHP:ssä
Harvat ihmiset ymmärtävät sen, mutta PHP:ssä on nyt sisäänrakennettu RFC-standardi suodattimen validointitoiminto.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex oikealle sähköpostiosoitteelle C#
Tässä on sähköpostiosoitteen perusvahvistus C#:ssa
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);
}
}
Tämän menetelmän käytännön käyttö:
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.");
}
Regex oikealle sähköpostiosoitteelle Javassa
Tässä on Java-sähköpostiosoitteen perustarkistus
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();
}
}
Tämän menetelmän käytännön käyttö:
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.");
}
Regex oikealle sähköpostiosoitteelle Pythonissa
Tässä on perussähköpostiosoitteen vahvistus Pythonissa:
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
Tämän menetelmän käytännön käyttö:
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.")
Regex oikealle sähköpostiosoitteelle JavaScriptissä
Sinulla ei tarvitse olla liian monimutkaista standardia sähköpostiosoitteen rakenteen tarkistamiseen. Tässä on yksinkertainen tapa käyttää JavaScriptiä.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Tämä ei tietenkään ole RFC-standardin mukainen, joten saatat haluta tarkistaa jokaisen datan osan varmistaaksesi sen oikeellisuuden. Tämä säännöllinen lauseke noudattaa noin 99.9 % olemassa olevista sähköpostiosoitteista. Se ei ole täysin standardin mukainen, mutta siitä on hyötyä käytännössä kaikissa projekteissa.
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);
}
Joidenkin näistä esimerkeistä saa kiitosta HTML.form.guide.