چگونه یک آدرس ایمیل را با عبارات منظم (Regex) تأیید کنیم. کدهای HTML5، PHP، C#، Python و Java را نمونه کنید.
امروزه تقریباً هر زبان برنامه نویسی از عبارات منظم پشتیبانی می کند. در حالی که برخی از توسعه دهندگان آنها را دوست ندارند، آنها واقعاً بهترین روش هستند زیرا معمولاً عملکردهایی مانند اعتبار سنجی را بسیار سریع با منابع سرور کمتر انجام می دهند. آدرسهای ایمیل نمونهای عالی هستند که میتوان آنها را بهراحتی بررسی کرد تا از فرمت صحیح آنها اطمینان حاصل شود.
به خاطر داشته باشید که اعتبارسنجی نیست تایید. اعتبارسنجی به سادگی به این معنی است که داده های ارسال شده از یک قالب استاندارد پیروی می کنند که به درستی ساخته شده است. برخی از چیزهای جالب در مورد آدرس های ایمیل که ممکن است پس از تأیید اعتبار از دست داده شوند.
آدرس ایمیل چیست؟
یک آدرس ایمیل، همانطور که توسط قالب پیام اینترنتی تعریف شده است (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 کاراکتر در وب محدود می شوند ... که از نظر فنی نادرست است. برخی از عبارات معمولی دیگر که برای اعتبارسنجی آدرسهای ایمیل استفاده میشوند نیز به دنبال یک دامنه سطح بالای 3 رقمی هستند، مانند .com. با این حال، هیچ محدودیتی برای طول وجود ندارد دامنه های سطح بالا (به عنوان مثال. Martech Zone دارای 4 رقم – .zone).
عبارات با قاعده
RegEx یک روش عالی برای آزمایش آدرس ایمیل به دلیل ساختار برنامه ای آن است. عبارات منظم به طور گسترده در زبان های برنامه نویسی و ویرایشگرهای متن استفاده می شوند و اغلب در کتابخانه ها یا چارچوب های پردازش متن ادغام می شوند. آنها توسط بسیاری از زبان های برنامه نویسی از جمله پایتون، جاوا، سی شارپ و جاوا اسکریپت و غیره پشتیبانی می شوند.
استانداردسازی آدرس ایمیل بسیار پیچیده تر از آن چیزی است که تصور می کنید. هنگامی که به استاندارد نوشته می شود، در اینجا عبارت منظم واقعی برای یک آدرس ایمیل، اعتبار به 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 برای یک آدرس ایمیل مناسب در سی شارپ
در اینجا اعتبار اولیه آدرس ایمیل در سی شارپ آمده است
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 برای یک آدرس ایمیل مناسب در جاوا
در اینجا اعتبار اولیه یک آدرس ایمیل در جاوا آمده است
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 برای یک آدرس ایمیل مناسب در پایتون
در اینجا یک اعتبارسنجی اولیه از یک آدرس ایمیل در پایتون آمده است:
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 برای یک آدرس ایمیل مناسب در جاوا اسکریپت
برای بررسی ساختار آدرس ایمیل نیازی به داشتن یک استاندارد بیش از حد پیچیده ندارید. در اینجا یک ابزار ساده با استفاده از جاوا اسکریپت وجود دارد.
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.