Cara Mengesahkan Alamat E-mel Dengan Ungkapan Biasa (Regex). Contoh HTML5, PHP, C#, Python dan Kod Java.
Hampir setiap bahasa pengaturcaraan menyokong ungkapan biasa pada masa kini. Walaupun sesetengah pembangun tidak menyukainya, mereka benar-benar merupakan amalan terbaik kerana mereka biasanya melaksanakan fungsi seperti pengesahan dengan sangat pantas dengan sumber pelayan yang lebih sedikit. Alamat e-mel ialah contoh yang sempurna… di mana ia boleh disemak dengan mudah untuk memastikan ia diformatkan dengan betul.
Perlu diingat bahawa pengesahan tidak pengesahan. Pengesahan hanya bermaksud bahawa data yang diluluskan mengikut format standard yang dibina dengan betul. Beberapa perkara menarik tentang alamat e-mel yang boleh terlepas selepas pengesahan.
Apakah Alamat E-mel?
Alamat e-mel, seperti yang ditakrifkan oleh Format Mesej Internet (RFC 5322), terdiri daripada dua bahagian utama: bahagian tempatan dan bahagian domain. Bahagian tempatan datang sebelum @
simbol dan bahagian domain datang selepas. Berikut ialah contoh alamat e-mel: example@example.com
, Di mana example
ialah bahagian tempatan dan example.com
ialah bahagian domain.
- Tempatan – Bahagian setempat alamat e-mel mungkin mengandungi gabungan aksara alfanumerik, noktah, sempang, tanda tambah dan garis bawah. Ia biasanya digunakan untuk mengenal pasti peti mel atau akaun tertentu pada pelayan.
- domain – Bahagian domain alamat e-mel terdiri daripada nama domain dan domain peringkat atasnya (TLD). Nama domain ialah rentetan aksara yang mengenal pasti pelayan yang mengehos akaun e-mel. TLD menentukan jenis entiti yang bertanggungjawab untuk nama domain, seperti kod negara (cth
.uk
) atau domain peringkat atas generik (cth.com
,.org
).
Walaupun ini adalah struktur asas alamat e-mel, peraturan untuk perkara yang membentuk alamat e-mel yang sah adalah rumit.
Berapa Lama Alamat E-mel Boleh?
Saya terpaksa membuat penggalian hari ini untuk mencarinya, tetapi adakah anda tahu berapa lama alamat e-mel yang sah? Ia sebenarnya dipecah menjadi beberapa bahagian ... Local@Domain.com.
- Setempat boleh terdiri daripada 1 hingga 64 aksara.
- Domain boleh terdiri daripada 1 hingga 255 aksara.
Ini bermakna - secara teknikal - ini boleh menjadi alamat e-mel yang sah:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Cuba pasangkannya pada kad perniagaan! Ironinya, kebanyakan medan alamat e-mel dihadkan kepada 100 aksara di web… yang secara teknikalnya tidak betul. Beberapa ungkapan biasa lain yang digunakan untuk mengesahkan alamat e-mel juga mencari domain peringkat atas 3 digit, seperti .com; walau bagaimanapun, tiada had untuk panjang domain peringkat atasan (contohnya. Martech Zone mempunyai 4 digit – .zon).
Ekspresi Biasa
RegEx ialah kaedah yang sempurna untuk menguji alamat e-mel kerana struktur programnya. Ungkapan biasa digunakan secara meluas dalam bahasa pengaturcaraan dan editor teks dan sering disepadukan ke dalam perpustakaan atau rangka kerja pemprosesan teks. Mereka disokong oleh banyak bahasa pengaturcaraan, termasuk Python, Java, C#, dan JavaScript, antara lain.
Penyeragaman alamat e-mel adalah jauh lebih kompleks daripada yang anda sedar. Apabila ditulis kepada standard, berikut ialah ungkapan biasa yang sebenar untuk alamat e-mel, kredit kepada 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])?
Corak ungkapan biasa ini sepadan dengan format asas alamat e-mel, termasuk aksara abjad angka, noktah, sempang, tanda tambah dan garis bawah dalam nama pengguna, diikuti dengan @
simbol, diikuti dengan nama domain. Adalah penting untuk ambil perhatian bahawa corak ini hanya akan menyemak format alamat e-mel dan bukan yang sebenar kewujudan daripada alamat e-mel.
HTML5 Termasuk Pengesahan Struktur E-mel
Cara paling mudah untuk memastikan e-mel adalah sah mengikut standard adalah dengan menggunakan medan input e-mel HTML5:
<input type='email' name='email' placeholder='name@domain.com' />
Namun, ada kalanya aplikasi web anda masih mahu mengesahkan alamat e-mel dalam penyemak imbas apabila dimasukkan dan apabila diserahkan kepada pelayan anda.
Regex Untuk Alamat E-mel yang Betul dalam PHP
Sebilangan kecil orang menyedarinya, tetapi PHP kini mempunyai standard RFC yang dibina ke dalamnya fungsi pengesahan penapis.
if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
// Valid
}
else {
// Not Valid
}
Regex Untuk Alamat E-mel yang Betul dalam C#
Berikut ialah pengesahan asas alamat e-mel dalam 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);
}
}
Penggunaan praktikal kaedah ini:
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 Untuk Alamat E-mel yang Betul di Java
Berikut ialah pengesahan asas alamat e-mel dalam 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();
}
}
Penggunaan praktikal kaedah ini:
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 Untuk Alamat E-mel yang Betul dalam Python
Berikut ialah pengesahan asas alamat e-mel dalam 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
Penggunaan praktikal kaedah ini:
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 Untuk Alamat E-mel yang Betul dalam JavaScript
Anda tidak perlu mempunyai standard yang terlalu kompleks untuk menyemak struktur alamat e-mel. Berikut ialah cara mudah menggunakan JavaScript.
function validateEmail(email)
{
var re = /\\S+@\\S+/;
return re.test(email);
}
Sudah tentu, itu bukan standard RFC, jadi anda mungkin ingin mengesahkan setiap bahagian data untuk memastikan ia sah. Ungkapan biasa ini akan mematuhi kira-kira 99.9% alamat e-mel di luar sana. Ia tidak sepenuhnya mengikut standard, tetapi ia berguna untuk hampir mana-mana 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);
}
Kredit untuk beberapa contoh ini diberikan kepada HTML.form.guide.