Ինչպես վավերացնել էլփոստի հասցեն կանոնավոր արտահայտություններով (Regex): Նմուշ HTML5, PHP, C#, Python և Java Code:
Գրեթե յուրաքանչյուր ծրագրավորման լեզու մեր օրերում աջակցում է կանոնավոր արտահայտություններին: Թեև որոշ ծրագրավորողներ չեն սիրում դրանք, դրանք իսկապես լավագույն պրակտիկա են, քանի որ սովորաբար կատարում են այնպիսի գործառույթներ, ինչպիսիք են վավերացումը չափազանց արագ՝ ավելի քիչ սերվերի ռեսուրսներով: Էլփոստի հասցեները կատարյալ օրինակ են… որտեղ դրանք կարելի է հեշտությամբ ստուգել՝ համոզվելու համար, որ դրանք ճիշտ ձևաչափված են:
Հիշեք, որ վավերացումն այդպես չէ ստուգում. Վավերացումը պարզապես նշանակում է, որ փոխանցված տվյալները հետևում են ստանդարտ ձևաչափին, որը պատշաճ կերպով կառուցված է: Որոշ հետաքրքիր բաներ էլփոստի հասցեների վերաբերյալ, որոնք կարող են բաց թողնել վավերացումից հետո:
Ինչ է էլփոստի հասցեն:
Էլեկտրոնային փոստի հասցե, ինչպես սահմանված է ինտերնետ հաղորդագրության ձևաչափով (RFC 5322), կազմված է երկու հիմնական մասից՝ տեղային մասից և տիրույթից։ Տեղական մասը առաջ է գալիս @
խորհրդանիշը և դոմենի մասը գալիս է դրանից հետո: Ահա էլփոստի հասցեի օրինակ. example@example.com
, Որտեղ example
տեղական մասն է և example.com
տիրույթի մասն է:
- Տեղական. – Էլփոստի հասցեի տեղական մասը կարող է պարունակել այբբենական նիշերի, կետերի, գծիկների, գումարած նշանների և ընդգծումների համակցություն: Այն սովորաբար օգտագործվում է սերվերի վրա որոշակի փոստարկղ կամ հաշիվ նույնականացնելու համար:
- Դոմեյն – Էլփոստի հասցեի տիրույթի մասը բաղկացած է տիրույթի անունից և դրա վերին մակարդակի տիրույթից (TLD) Դոմենի անունը նիշերի շարան է, որը նույնականացնում է էլփոստի հաշիվը հյուրընկալող սերվերը: TLD-ը սահմանում է տիրույթի անվան համար պատասխանատու կազմակերպության տեսակը, օրինակ՝ երկրի կոդը (օր
.uk
) կամ ընդհանուր վերին մակարդակի տիրույթ (օրինակ.com
,.org
).
Թեև սա էլփոստի հասցեի հիմնական կառուցվածքն է, կանոնները, թե որն է վավեր էլփոստի հասցեն, բարդ են:
Որքա՞ն երկար կարող է լինել էլփոստի հասցեն:
Ես ստիպված էի փորփրել այսօր `այն գտնելու համար, բայց գիտե՞ք, թե որն է էլեկտրոնային հասցեի վավեր երկարությունը: Այն իրականում բաժանված է մասերի Local@Domain.com.
- Տեղական կարող է լինել 1-ից 64 նիշ:
- Դոմենը կարող է լինել 1-ից 255 նիշ:
Դա նշանակում է, որ տեխնիկապես սա կարող է լինել վավեր էլփոստի հասցե.
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Փորձեք դա տեղադրել այցեքարտի վրա: Ճակատագրի հեգնանքով, էլփոստի հասցեների դաշտերի մեծ մասը սահմանափակված է համացանցում 100 նիշով… ինչը տեխնիկապես սխալ է: Որոշ այլ կանոնավոր արտահայտություններ, որոնք օգտագործվում են էլփոստի հասցեները վավերացնելու համար, նաև փնտրում են եռանիշ վերին մակարդակի տիրույթ, ինչպիսին է .com; սակայն, երկարության սահմանափակում չկա վերին մակարդակի տիրույթներ (օրինակ. Martech Zone ունի 4 նիշ – .zone).
Կանոնավոր արտահայտություններ
RegEx փոստի հասցեն փորձարկելու կատարյալ մեթոդ է իր ծրագրային կառուցվածքի պատճառով: Կանոնավոր արտահայտությունները լայնորեն օգտագործվում են ծրագրավորման լեզուներում և տեքստային խմբագրիչներում և հաճախ ինտեգրվում են տեքստի մշակման գրադարաններին կամ շրջանակներին: Դրանք աջակցվում են ծրագրավորման բազմաթիվ լեզուներով, ներառյալ Python, Java, C# և JavaScript, ի թիվս այլոց:
Էլփոստի հասցեների ստանդարտացումը շատ ավելի բարդ է, քան դուք պատկերացնում եք: Երբ գրվում է ստանդարտին, ահա էլփոստի հասցեի իսկական կանոնավոր արտահայտությունը 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])?
Այս կանոնավոր արտահայտությունը համընկնում է էլփոստի հասցեի հիմնական ձևաչափին, ներառյալ այբբենական նիշերը, կետերը, գծիկները, գումարած նշանները և օգտվողի անվան տակ ընդգծումները, որին հաջորդում է @
խորհրդանիշ, որին հաջորդում է տիրույթի անունը: Կարևոր է նշել, որ այս օրինաչափությունը ստուգելու է միայն էլփոստի հասցեի ձևաչափը, այլ ոչ թե իրականը գոյություն էլփոստի հասցեից։
HTML5-ը ներառում է էլփոստի կառուցվածքի վավերացում
Ստանդարտի համաձայն էլփոստի վավերականությունն ապահովելու ամենահեշտ միջոցը HTML5 էլփոստի մուտքագրման դաշտի օգտագործումն է.
<input type='email' name='email' placeholder='name@domain.com' />
Այնուամենայնիվ, կան դեպքեր, երբ ձեր վեբ հավելվածը դեռ ցանկանում է վավերացնել էլփոստի հասցեն ինչպես բրաուզերում, երբ մուտքագրվում է, և երբ այն ուղարկվում է ձեր սերվերին:
Regex PHP-ում պատշաճ էլփոստի հասցեի համար
Քչերն են դա գիտակցում, բայց PHP-ն այժմ ունի իր մեջ ներկառուցված RFC ստանդարտը ֆիլտրի վավերացման գործառույթ.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex C#-ում պատշաճ էլփոստի հասցեի համար
Ահա էլփոստի հասցեի հիմնական վավերացումը 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);
}
}
Այս մեթոդի գործնական օգտագործումը.
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՝ Java-ում պատշաճ էլ․ հասցեի համար
Ահա 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();
}
}
Այս մեթոդի գործնական օգտագործումը.
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՝ Python-ում պատշաճ էլփոստի հասցեի համար
Ահա 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
Այս մեթոդի գործնական օգտագործումը.
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՝ JavaScript-ում պատշաճ էլ. հասցեի համար
Էլփոստի հասցեի կառուցվածքը ստուգելու համար պետք չէ չափազանց բարդ ստանդարտ ունենալ: Ահա JavaScript-ի օգտագործման պարզ միջոց:
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Իհարկե, դա չի համապատասխանում RFC ստանդարտին, այնպես որ դուք կարող եք ստուգել տվյալների յուրաքանչյուր բաժինը, որպեսզի համոզվեք, որ դրանք վավեր են: Այս սովորական արտահայտությունը կհամապատասխանի այնտեղ գտնվող էլփոստի հասցեների մոտ 99.9%-ին: Այն լիովին չի համապատասխանում ստանդարտներին, բայց այն օգտակար է գրեթե ցանկացած նախագծի համար:
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);
}
Այս օրինակներից մի քանիսի վարկը գնում է HTML.form.guide.