از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دریافت نام از آدرس ایمیل با جاوا اسکریپت
سرفصلهای مطلب
معرفی
بیایید در مورد استخراج نام از آدرس های ایمیل با استفاده از جاوا اسکریپت صحبت کنیم. این می تواند زمانی مفید باشد که با داده های انبوه سروکار دارید و باید ارتباطات خود را شخصی سازی کنید. به عنوان مثال، ممکن است بخواهید یک ایمیل انبوه برای کاربران خود ارسال کنید اما هر کدام را با نام خود خطاب کنید. بیایید ببینیم چگونه می توانیم این کار را انجام دهیم.
ساختار آدرس ایمیل
قبل از اینکه به راه حل جاوا اسکریپت بپردازیم، ابتدا ساختار یک آدرس ایمیل را درک می کنیم. یک آدرس ایمیل اصلی شامل دو بخش است که با نماد ‘@’ از هم جدا شده اند – بخش محلی و بخش دامنه. بخش محلی معمولاً نام فرد یا سرویس است، در حالی که قسمت دامنه نشان دهنده دامنه ای است که ایمیل در آن میزبانی می شود.
یک آدرس ایمیل معمولی به شکل زیر است: (email protected)
. با این حال، آدرس های ایمیل می توانند در قالب های دیگری مانند Name <(email protected)>
. در این حالت، نام فرد با یک جفت براکت زاویه از آدرس ایمیل جدا می شود.
رویکرد جاوا اسکریپت
جاوا اسکریپت چندین روش داخلی و عبارات منظم ارائه می دهد که می توانیم از آنها برای استخراج نام از آدرس ایمیل استفاده کنیم. ما دو تا از این روش ها را در این بایت بررسی خواهیم کرد – the split()
روش و عبارات منظم
با استفاده از روش تقسیم رشته
متد split() a را تقسیم می کند String
در یک لیست مرتب شده از زیر رشته ها، این زیررشته ها را در یک آرایه قرار داده و آرایه را برمی گرداند. تقسیم با جستجوی یک الگو انجام می شود که در آن الگو به عنوان اولین پارامتر در فراخوانی متد ارائه می شود.
در اینجا نحوه استفاده از آن آمده است split()
روش استخراج نام از آدرس ایمیل:
let email = "Scott <(email protected)>";
let name = email.split('<')(0).trim();
console.log(name); // Output: Scott
در این مثال، رشته ایمیل را در کاراکتر «<» تقسیم می کنیم، که آرایه ای از دو عنصر را به ما می دهد. عنصر اول "اسکات" است و عنصر دوم است (email protected)>
. سپس از trim()
روش حذف فضای انتهایی از عنصر اول، که به ما نام “Scott” را می دهد.
اما اگر آدرس ایمیل حاوی پرانتز نباشد چه؟ در آن صورت، می توانیم رشته را در کاراکتر ‘@’ تقسیم کنیم:
let email = "(email protected)";
let name = email.split('@')(0);
console.log(name); // Output: scott
این روش ساده است و برای اکثر فرمت های ایمیل به خوبی کار می کند. با این حال، ممکن است آن طور که انتظار می رود برای برخی از قالب های ایمیل غیر معمول کار نکند.
یکی از مواردی که باید به آن توجه کنید این است که ابتدا بررسی کنید که آدرس ایمیل در چه قالبی است. از آنجایی که میتواند چند شکل مختلف به خود بگیرد، ابتدا باید یک روش قوی برای تعیین فرمت آن داشته باشید.
استفاده از عبارات منظم
عبارات منظم، یا regex، دنباله ای از کاراکترها هستند که یک الگوی جستجو را تعریف می کنند. در جاوا اسکریپت می توانیم از آنها برای استخراج نام از آدرس ایمیل استفاده کنیم. دوباره یک آدرس ایمیل را در قالب در نظر خواهیم گرفت Name <(email protected)>
، مثلا، Scott <(email protected)>
.
regex که ما استفاده خواهیم کرد این است /.*(?=<)/
. این الگو تا زمانی که با هر کاراکتری مطابقت داشته باشد <
نماد، که مرز بین نام و ایمیل در قالب ما است.
در اینجا یک تابع ساده وجود دارد که از این regex برای دریافت نام از ایمیل استفاده می کند:
function getNameFromEmail(email) {
const regex = /.*(?=<)/;
const match = email.match(regex);
return match ? match(0).trim() : null;
}
console.log(getNameFromEmail("Scott <(email protected)>")); // Output: "Scott"
این match()
متد رشته مطابق یا را برمی گرداند null
اگر مطابقت پیدا نشد سپس از trim()
روشی برای حذف هر گونه فضای پیشرو یا انتهایی
استفاده از کتابخانه های شخص ثالث
اگر به دنبال صرفه جویی در زمان و اجتناب از اختراع مجدد چرخ هستید (که من به شدت توصیه می کنم)، تعدادی کتابخانه شخص ثالث وجود دارد که می تواند به استخراج نام از آدرس های ایمیل کمک کند. یکی از گزینه های محبوب است آدرس ایمیل کتابخانه این کتابخانه مجموعه ای قوی از ابزارها را برای تجزیه آدرس های ایمیل، از جمله استخراج نام ها، فراهم می کند.
در اینجا مثالی از نحوه استفاده از آن آورده شده است:
const emailAddress = require('email-addresses');
let email = 'Scott <(email protected)>';
let parsedEmail = emailAddress.parseOneAddress(email);
console.log(parsedEmail.name); // Outputs: Scott
در این مثال، ما از parseOneAddress
تابع از email-addresses
کتابخانه برای تجزیه آدرس ایمیل سپس ما به سادگی وارد شوید name
دارایی شیء برگشتی
برای آنچه ارزش دارد، این کتابخانه ای است که من برای آن استفاده می کنم مسدود کردن فرستنده خدمات، و برای مدت طولانی به من خدمت کرده است. من آن را برای هر نیاز تجزیه ایمیل غیر ضروری توصیه می کنم.
خطاهای احتمالی و راه حل های آنها
در حالی که روش فوق برای قالبهای ایمیل استاندارد به خوبی کار میکند، ممکن است با فرمتهای ایمیل غیرمعمول یا نامعتبر آنطور که انتظار میرفت کار نکند. برای مثال، اگر ایمیل حاوی الف نباشد <
نماد، match()
روش باز خواهد گشت null
، و ما نامی برای بازگشت نخواهیم داشت.
مدیریت فرمت های ایمیل نامعتبر
اگر یک آدرس ایمیل در قالب مورد انتظار نباشد، عملکرد ما باز خواهد گشت null
. همانطور که قبلا در این بایت به آن اشاره کردیم، میتوانیم چکهای سادهای را در ابتدای تابع خود اضافه کنیم تا قالب آن را بررسی کنیم:
function getNameFromEmail(email) {
if (!email.includes('<')) {
return null;
}
const regex = /.*(?=<)/;
const match = email.match(regex);
return match ? match(0).trim() : null;
}
console.log(getNameFromEmail("(email protected)")); // Output: null
حال اگر ایمیل حاوی الف نباشد <
نماد، تابع بلافاصله باز خواهد گشت null
.
برخورد با فرمت های ایمیل غیر معمول
گاهی اوقات ممکن است با فرمت های ایمیل غیرعادی روبرو شوید. به عنوان مثال، نام ممکن است حاوی کاراکترهای خاص باشد، یا ایمیل ممکن است از جداکننده دیگری استفاده کند. در چنین مواردی، باید regex خود را تغییر دهید یا یک تابع سفارشی برای رسیدگی به این موارد بنویسید.
بیایید یک قالب ایمیل را در نظر بگیریم که در آن نام در پرانتز محصور شده است، به عنوان مثال، “(Scott) (ایمیل محافظت شده)تابع قبلی ما در اینجا کار نمی کند، اما می توانیم به راحتی regex را برای مدیریت این مورد تغییر دهیم:
function getNameFromEmail(email) {
const regex = /\((.*?)\)/;
const match = email.match(regex);
return match ? match(1).trim() : null;
}
console.log(getNameFromEmail("(Scott) (email protected)")); // Output: "Scott"
در حالی که ممکن است این یک فرم آدرس استاندارد نباشد، از اینکه چه تعداد فرمت های مختلف ایمیل وجود دارد، استاندارد شده یا غیر استاندارد، تعجب خواهید کرد. اگر میخواهید تعداد زیادی ایمیل را مدیریت کنید، بهخصوص ایمیلهایی که از سرویسهای ایمیل محبوب و منطبق مانند G Suite نیستند، باید برای دریافت همه موارد حاشیهای وقت بگذارید.
نتیجه
در این بایت، روشهای مختلفی را برای استخراج نام از آدرس ایمیل با استفاده از جاوا اسکریپت بررسی کردهایم. ما روشهای جاوا اسکریپت داخلی، عبارات منظم و حتی کتابخانههای شخص ثالث را بررسی کردهایم. ما همچنین در مورد مسائل احتمالی با فرمت های غیر استاندارد بحث کرده ایم. امیدواریم روشی را پیدا کرده باشید که برای مورد استفاده شما خوب عمل کند.
منتشر شده در 1402-12-26 03:10:26