Sut i Ddilysu Cyfeiriad E-bost Gyda Mynegiadau Rheolaidd (Regex). Sampl HTML5, PHP, C#, Python, a Java Code.
Mae bron pob iaith raglennu yn cefnogi ymadroddion rheolaidd y dyddiau hyn. Er nad yw rhai datblygwyr yn eu hoffi, maent yn wir yn arfer gorau gan eu bod fel arfer yn cyflawni swyddogaethau fel dilysu yn hynod o gyflym gyda llai o adnoddau gweinydd. Mae cyfeiriadau e-bost yn enghraifft berffaith ... lle gellir eu gwirio'n hawdd i sicrhau eu bod wedi'u fformatio'n gywir.
Cofiwch nad yw dilysu dilysu. Yn syml, mae dilysu'n golygu bod y data a basiwyd yn dilyn fformat safonol sydd wedi'i lunio'n gywir. Rhai pethau diddorol am gyfeiriadau e-bost y gellid eu methu ar ôl eu dilysu.
Beth Yw Cyfeiriad E-bost?
Cyfeiriad e-bost, fel y'i diffinnir gan y Fformat Neges Rhyngrwyd (RFC 5322), yn cynnwys dwy brif ran: rhan leol a rhan parth. Daw'r rhan leol cyn y @
symbol a daw'r rhan parth ar ôl. Dyma enghraifft o gyfeiriad e-bost: example@example.com
, Lle example
yw'r rhan leol a example.com
yw'r rhan parth.
- Lleol – Gall rhan leol cyfeiriad e-bost gynnwys cyfuniad o nodau alffaniwmerig, cyfnodau, cysylltnodau, ynghyd ag arwyddion, a thanlinellau. Fe'i defnyddir yn nodweddiadol i nodi blwch post neu gyfrif penodol ar weinydd.
- Parth – Mae rhan parth cyfeiriad e-bost yn cynnwys yr enw parth a'i barth lefel uchaf (TLD). Mae'r enw parth yn gyfres o nodau sy'n nodi'r gweinydd sy'n cynnal y cyfrif e-bost. Mae'r TLD yn pennu'r math o endid sy'n gyfrifol am yr enw parth, megis cod gwlad (ee
.uk
) neu barth lefel uchaf generig (ee.com
,.org
).
Er mai dyma strwythur sylfaenol cyfeiriad e-bost, mae'r rheolau ar gyfer beth yw cyfeiriad e-bost dilys yn gymhleth.
Pa mor hir y gall cyfeiriad e-bost fod?
Roedd yn rhaid i mi wneud rhywfaint o gloddio heddiw i ddod o hyd iddo, ond a oeddech chi'n gwybod beth yw hyd dilys cyfeiriad e-bost? Mae wedi torri i mewn i rannau mewn gwirionedd ... Lleol@Domain.com.
- Gall lleol fod rhwng 1 a 64 nod.
- Gall parth fod yn 1 i 255 nod.
Mae hynny’n golygu – yn dechnegol – y gallai hwn fod yn gyfeiriad e-bost dilys:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Ceisiwch osod hwnnw ar gerdyn busnes! Yn eironig, mae'r rhan fwyaf o feysydd cyfeiriad e-bost wedi'u cyfyngu i 100 nod ar y we ... sy'n dechnegol anghywir. Mae rhai o'r ymadroddion rheolaidd eraill a ddefnyddir i ddilysu cyfeiriadau e-bost hefyd yn edrych am barth lefel uchaf 3 digid, fel .com; fodd bynnag, nid oes cyfyngiad ar hyd y parthau lefel uchaf (ee. Martech Zone gyda 4 digid – .zone).
Mynegiadau Rheolaidd
RegEx yn ddull perffaith ar gyfer profi cyfeiriad e-bost oherwydd ei strwythur rhaglennol. Defnyddir ymadroddion rheolaidd yn eang mewn ieithoedd rhaglennu a golygyddion testun ac yn aml cânt eu hintegreiddio i lyfrgelloedd neu fframweithiau prosesu testun. Fe'u cefnogir gan lawer o ieithoedd rhaglennu, gan gynnwys Python, Java, C #, a JavaScript, ymhlith eraill.
Mae safoni cyfeiriadau e-bost yn llawer mwy cymhleth nag yr ydych yn sylweddoli. Wedi'i ysgrifennu i'r safon, dyma'r gwir fynegiad rheolaidd ar gyfer cyfeiriad e-bost, credyd i 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])?
Mae'r patrwm mynegiant rheolaidd hwn yn cyfateb i fformat sylfaenol cyfeiriad e-bost, gan gynnwys nodau alffaniwmerig, cyfnodau, cysylltnodau, ynghyd ag arwyddion, a thanlinellau yn yr enw defnyddiwr, ac yna @
symbol, ac yna enw parth. Mae'n bwysig nodi y bydd y patrwm hwn ond yn gwirio fformat y cyfeiriad e-bost ac nid y cyfeiriad gwirioneddol bodolaeth o'r cyfeiriad e-bost.
HTML5 Yn cynnwys Dilysu Strwythur E-bost
Y ffordd hawsaf o sicrhau bod e-bost yn ddilys yn unol â'r safon yw trwy ddefnyddio maes mewnbwn e-bost HTML5:
<input type='email' name='email' placeholder='name@domain.com' />
Fodd bynnag, mae yna adegau y bydd eich rhaglen we yn dal i fod eisiau dilysu'r cyfeiriad e-bost yn y porwr wrth ei fewnosod a phan gaiff ei gyflwyno i'ch gweinydd.
Regex Am Gyfeiriad E-bost Priodol yn PHP
Ychydig iawn o bobl sy'n ei sylweddoli, ond erbyn hyn mae safon y Clwb Rygbi wedi'i gynnwys yn PHP swyddogaeth dilysu hidlydd.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex Am Gyfeiriad E-bost Priodol yn C#
Dyma ddilysiad sylfaenol o gyfeiriad e-bost yn 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);
}
}
Defnydd ymarferol o'r dull hwn:
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 Am Gyfeiriad E-bost Priodol yn Java
Dyma ddilysiad sylfaenol o gyfeiriad e-bost yn 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();
}
}
Defnydd ymarferol o'r dull hwn:
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 Am Gyfeiriad E-bost Priodol yn Python
Dyma ddilysiad sylfaenol o gyfeiriad e-bost yn 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
Defnydd ymarferol o'r dull hwn:
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 Am Gyfeiriad E-bost Priodol yn JavaScript
Nid oes rhaid i chi gael safon rhy gymhleth ar gyfer gwirio strwythur cyfeiriad e-bost. Dyma ffordd syml o ddefnyddio JavaScript.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Wrth gwrs, nid yw hynny i'r safon RFC, felly efallai y byddwch am ddilysu pob adran o'r data i sicrhau ei fod yn ddilys. Bydd y mynegiant rheolaidd hwn yn cydymffurfio â thua 99.9% o'r cyfeiriadau e-bost sydd ar gael. Nid yw'n gwbl safonol, ond mae'n ddefnyddiol ar gyfer bron unrhyw brosiect.
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);
}
Credyd ar gyfer rhai o'r enghreifftiau hyn yn mynd i Canllaw.ffurflen HTML.