Hoe om 'n e-posadres met gereelde uitdrukkings (Regex) te bekragtig. Voorbeeld van HTML5, PHP, C#, Python en Java-kode.
Feitlik elke programmeertaal ondersteun deesdae gereelde uitdrukkings. Alhoewel sommige ontwikkelaars nie van hulle hou nie, is dit werklik 'n beste praktyk, aangesien hulle gewoonlik funksies soos validering uiters vinnig uitvoer met minder bedienerhulpbronne. E-posadresse is 'n perfekte voorbeeld ... waar hulle maklik nagegaan kan word om te verseker dat hulle behoorlik geformateer is.
Hou in gedagte dat validering nie is nie verifikasie. Validasie beteken eenvoudig dat die data wat deurgegee word, 'n standaardformaat volg wat behoorlik saamgestel is. 'n Paar interessante dinge oor e-posadresse wat gemis kan word tydens validering.
Wat is 'n e-posadres?
'n E-posadres, soos gedefinieer deur die internetboodskapformaat (RFC 5322), bestaan uit twee hoofdele: 'n plaaslike deel en 'n domeindeel. Die plaaslike deel kom voor die @
simbool en die domein deel kom daarna. Hier is 'n voorbeeld van 'n e-posadres: example@example.com
, Waar example
is die plaaslike deel en example.com
is die domein deel.
- Plaaslike – Die plaaslike deel van 'n e-posadres kan 'n kombinasie van alfanumeriese karakters, punte, koppeltekens, plustekens en onderstrepings bevat. Dit word tipies gebruik om 'n spesifieke posbus of rekening op 'n bediener te identifiseer.
- Domain – Die domeingedeelte van 'n e-posadres bestaan uit die domeinnaam en sy topvlakdomein (TLD). Die domeinnaam is 'n string karakters wat die bediener identifiseer wat die e-posrekening huisves. Die TLD spesifiseer die tipe entiteit wat verantwoordelik is vir die domeinnaam, soos 'n landkode (bv
.uk
) of 'n generiese topvlakdomein (bv.com
,.org
).
Alhoewel dit die basiese struktuur van 'n e-posadres is, is die reëls vir wat 'n geldige e-posadres uitmaak kompleks.
Hoe lank kan 'n e-posadres wees?
Ek moes vandag grawe om dit op te spoor, maar het u geweet wat die geldige lengte van 'n e-posadres is? Dit is eintlik in dele opgebreek ... Local@Domain.com.
- Plaaslik kan 1 tot 64 karakters wees.
- Domein kan 1 tot 255 karakters bevat.
Dit beteken dat - tegnies - dit 'n geldige e-posadres kan wees:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Probeer om dit op 'n besigheidskaartjie te pas! Ironies genoeg is die meeste e-posadresvelde beperk tot 100 karakters op die web ... wat tegnies verkeerd is. Sommige van die ander gereelde uitdrukkings wat gebruik word om e-posadresse te valideer, soek ook 'n 3-syfer-topvlakdomein, soos .com; daar is egter geen beperking op die lengte van topvlakdomeine (bv. Martech Zone het 4 syfers – .zone).
Gereelde uitdrukkings
RegEx is 'n perfekte metode om 'n e-posadres te toets vanweë die programmatiese struktuur daarvan. Gereelde uitdrukkings word wyd gebruik in programmeertale en teksredigeerders en word dikwels in teksverwerkingsbiblioteke of -raamwerke geïntegreer. Hulle word ondersteun deur baie programmeertale, insluitend Python, Java, C# en JavaScript, onder andere.
E-posadresstandaardisering is baie meer kompleks as wat jy besef. Wanneer dit volgens die standaard geskryf is, is hier die ware gereelde uitdrukking vir 'n e-posadres, krediet aan 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])?
Hierdie gereelde uitdrukkingspatroon pas by die basiese formaat van 'n e-posadres, insluitend alfanumeriese karakters, punte, koppeltekens, plustekens en onderstrepe in die gebruikernaam, gevolg deur 'n @
simbool, gevolg deur 'n domeinnaam. Dit is belangrik om daarop te let dat hierdie patroon slegs die formaat van die e-posadres sal kontroleer en nie die werklike nie bestaan van die e-posadres.
HTML5 sluit e-posstruktuurvalidering in
Die maklikste manier om te verseker dat 'n e-pos volgens die standaard geldig is, is deur 'n HTML5-e-posinvoerveld te gebruik:
<input type='email' name='email' placeholder='name@domain.com' />
Daar is egter tye dat jou webtoepassing steeds die e-posadres in die blaaier wil bekragtig wanneer dit ingevoer word en wanneer dit by jou bediener ingedien word.
Regex vir 'n behoorlike e-posadres in PHP
Min mense besef dit, maar PHP het nou die RFC-standaard ingebou filter validasie funksie.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex vir 'n behoorlike e-posadres in C#
Hier is basiese validering van 'n e-posadres in 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);
}
}
Praktiese gebruik van hierdie 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.");
}
Regex vir 'n behoorlike e-posadres in Java
Hier is basiese validering van 'n e-posadres in Java
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();
}
}
Praktiese gebruik van hierdie 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.");
}
Regex vir 'n behoorlike e-posadres in Python
Hier is 'n basiese validering van 'n e-posadres in Python:
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
Praktiese gebruik van hierdie 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.")
Regex vir 'n behoorlike e-posadres in JavaScript
Jy hoef nie 'n te komplekse standaard te hê om 'n e-posadresstruktuur na te gaan nie. Hier is 'n eenvoudige manier om JavaScript te gebruik.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Dit is natuurlik nie volgens die RFC-standaard nie, so jy wil dalk elke afdeling van die data valideer om te verseker dat dit geldig is. Hierdie gereelde uitdrukking sal aan ongeveer 99.9% van e-posadresse daar buite voldoen. Dit is nie heeltemal op standaard nie, maar dit is nuttig vir feitlik enige projek.
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);
}
Krediet vir sommige van hierdie voorbeelde gaan aan HTML.vorm.gids.