Kā pārbaudīt e-pasta adresi ar regulārām izteiksmēm (Regex). HTML5, PHP, C#, Python un Java koda paraugs.
Praktiski katra programmēšanas valoda mūsdienās atbalsta regulārās izteiksmes. Lai gan dažiem izstrādātājiem tie nepatīk, tie patiešām ir labākā prakse, jo tie parasti veic tādas funkcijas kā validācija ārkārtīgi ātri ar mazākiem servera resursiem. E-pasta adreses ir lielisks piemērs... kur tās var viegli pārbaudīt, lai pārliecinātos, ka tās ir pareizi formatētas.
Paturiet prātā, ka apstiprināšana nav pārbaude. Validācija vienkārši nozīmē, ka nodotie dati atbilst standarta formātam, kas ir pareizi izveidots. Dažas interesantas lietas par e-pasta adresēm, kuras validācijas laikā var palaist garām.
Kas ir e-pasta adrese?
E-pasta adrese, kā noteikts interneta ziņojuma formātā (RFC 5322), sastāv no divām galvenajām daļām: vietējās daļas un domēna daļas. Vietējā daļa ir pirms @
simbols un domēna daļa nāk pēc tam. Šeit ir e-pasta adreses piemērs: example@example.com
, Kur example
ir vietējā daļa un example.com
ir domēna daļa.
- Uz vietas – E-pasta adreses vietējā daļa var saturēt burtciparu rakstzīmju, punktu, defisu, plus zīmju un pasvītru kombinācijas. To parasti izmanto, lai identificētu noteiktu pastkasti vai kontu serverī.
- Domēns – E-pasta adreses domēna daļa sastāv no domēna nosaukuma un tā augstākā līmeņa domēna (TLD). Domēna nosaukums ir rakstzīmju virkne, kas identificē serveri, kas mitina e-pasta kontu. TLD norāda par domēna nosaukumu atbildīgās entītijas veidu, piemēram, valsts kodu (piemēram,
.uk
) vai vispārīgu augstākā līmeņa domēnu (piem.,.com
,.org
).
Lai gan šī ir e-pasta adreses pamatstruktūra, noteikumi par derīgu e-pasta adresi ir sarežģīti.
Cik ilgi var būt e-pasta adrese?
Man šodien vajadzēja nedaudz rakt, lai to atrastu, bet vai zinājāt, kāds ir derīgs e-pasta adreses garums? Tas faktiski ir sadalīts daļās ... Local@Domain.com.
- Vietējais var būt no 1 līdz 64 rakstzīmēm.
- Domēna garums var būt no 1 līdz 255.
Tas nozīmē, ka tehniski šī varētu būt derīga e-pasta adrese:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Mēģiniet to ievietot vizītkartē! Ironiski, ka vairums e-pasta adreses lauku tīmeklī ir ierobežoti līdz 100 rakstzīmēm… kas ir tehniski nepareizi. Dažas citas regulārās izteiksmes, ko izmanto e-pasta adrešu apstiprināšanai, arī meklē 3 ciparu augstākā līmeņa domēnu, piemēram, .com; tomēr garumam nav ierobežojumu augstākā līmeņa domēni (piem. Martech Zone ir 4 cipari – .zona).
Regulāras izteiksmes
RegEx ir lieliska metode e-pasta adreses pārbaudei tās programmatiskās struktūras dēļ. Regulārās izteiksmes tiek plaši izmantotas programmēšanas valodās un teksta redaktoros, un tās bieži tiek integrētas teksta apstrādes bibliotēkās vai ietvaros. Tos atbalsta daudzas programmēšanas valodas, tostarp Python, Java, C# un JavaScript.
E-pasta adrešu standartizācija ir daudz sarežģītāka, nekā jūs saprotat. Rakstot atbilstoši standartam, šeit ir patiesā regulārā izteiksme e-pasta adresei, kredīts uz 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])?
Šis regulārās izteiksmes modelis atbilst e-pasta adreses pamata formātam, ieskaitot burtciparu rakstzīmes, punktus, defises, pluszīmes un pasvītras lietotājvārdā, kam seko @
simbols, kam seko domēna nosaukums. Ir svarīgi ņemt vērā, ka šis modelis pārbaudīs tikai e-pasta adreses formātu, nevis faktisko esamība no e-pasta adreses.
HTML5 ietver e-pasta struktūras validāciju
Vienkāršākais veids, kā nodrošināt e-pasta derīgumu atbilstoši standartam, ir izmantot HTML5 e-pasta ievades lauku:
<input type='email' name='email' placeholder='name@domain.com' />
Tomēr dažkārt jūsu tīmekļa lietojumprogramma joprojām vēlēsies apstiprināt e-pasta adresi gan pārlūkprogrammā, kad tā tiek ievadīta, gan pēc tās iesniegšanas jūsu serverim.
Regex pareizai e-pasta adresei PHP
Tikai daži cilvēki to saprot, bet PHP tagad ir iebūvēts RFC standarts filtra validācijas funkcija.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex pareizai e-pasta adresei C#
Šeit ir sniegta pamata e-pasta adreses pārbaude 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);
}
}
Šīs metodes praktiskā izmantošana:
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 pareizai e-pasta adresei Java
Šeit ir sniegta pamata e-pasta adreses validācija 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();
}
}
Šīs metodes praktiskā izmantošana:
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 pareizai e-pasta adresei Python
Tālāk ir sniegta Python e-pasta adreses pamata validācija:
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
Šīs metodes praktiskā izmantošana:
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 pareizai e-pasta adresei JavaScript
E-pasta adreses struktūras pārbaudei nav jābūt pārāk sarežģītam standartam. Šeit ir vienkāršs JavaScript izmantošanas veids.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Protams, tas neatbilst RFC standartam, tāpēc, iespējams, vēlēsities pārbaudīt katru datu sadaļu, lai pārliecinātos, ka tā ir derīga. Šī regulārā izteiksme atbilst aptuveni 99.9% e-pasta adrešu. Tas nav pilnībā atbilstošs standartam, taču tas ir noderīgs praktiski jebkuram projektam.
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);
}
Atzinība dažiem no šiem piemēriem iet uz HTML.form.guide.