از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
اعتبارسنجی شماره تلفن ها در جاوا اسکریپت با عبارات معمولی چه متوجه شوید یا نه، داده ها به بخش مهمی از زندگی روزمره ما تبدیل شده اند. از سفارش آنلاین غذا گرفته تا جستجوی غذای گربه، ما دائما در حال ارسال و دریافت اطلاعات هستیم. به عنوان توسعه دهندگان برنامه های کاربردی وب، مسئولیت ما این است که اطمینان حاصل کنیم که ورودی های کاربر در موارد مشخص شده …
سرفصلهای مطلب
معرفی
چه متوجه شوید یا نه، داده ها به بخش مهمی از زندگی روزمره ما تبدیل شده اند. از سفارش آنلاین غذا گرفته تا جستجوی غذای گربه، ما دائما در حال ارسال و دریافت اطلاعات هستیم. به عنوان توسعه دهندگان برنامه های کاربردی وب، مسئولیت ما این است که اطمینان حاصل کنیم که ورودی های کاربر در قالب مشخص شده است تا پایگاه داده داده ها را به درستی درک کند و برنامه قوی بماند.
اعتبارسنجی شماره تلفن مهم است زیرا تضمین می کند که داده ها در یک قالب ثابت در سراسر پایگاه داده ذخیره می شوند. برای مثال، کاربران ممکن است نیاز به توضیح داشته باشند روی آیا آنها باید کد کشور را قبل از شماره تلفن خود وارد کنند. با وجود اعتبار سنجی مناسب، کاربران به راحتی می توانند تشخیص دهند که آیا آن مورد نیاز است یا خیر. به طور مشابه، تجربه کاربر با یک قالب ثابت بهبود مییابد، زیرا میدانید از کاربران چه انتظاری دارید و میتوانید منطق را بر این اساس پیادهسازی کنید. اگر کد در مرحله بعد به دلیل داده های ناسازگار شکسته شود، تجربه ضعیفی برای کاربران خواهد بود.
عبارات منظم ابزار قدرتمندی برای تطبیق الگو هستند. آنها بسته به الگوهای مختلف، انعطاف پذیری را برای مطابقت با الگوهای مختلف فراهم می کنند روی مورد استفاده شما بعلاوه، عبارات منظم زبانی آگنوستیک هستند، و منطق اعتبارسنجی شما را قابل حمل تر می کند، زیرا می توانید به راحتی اعتبار سنجی اصلی را ادغام کنید. کار با regex در جاوا اسکریپت یک کار ساده است.
این مقاله به شما کمک میکند تا بفهمید چگونه از قدرت عبارات منظم برای اعتبارسنجی شماره تلفن برنامهتان استفاده کنید. شما یک تابع جاوا اسکریپت ساده می نویسید تا شماره تلفن ها را با کدهای کشور تأیید کنید.
یک عبارت منظم چیست؟
به زبان ساده، یک عبارت منظم با یک الگوی از پیش تعریف شده در یک رشته مشخص مطابقت دارد. این به طور گسترده در زبان های برنامه نویسی استفاده می شود و در درجه اول برای اعتبارسنجی ورودی های یک فرمت خاص استفاده می شود. علاوه بر این، عبارات منظم معمولاً برای جستجو، تقسیم و جایگزینی الگوهای مشخص شده استفاده میشوند.
فرض کنید می خواهید یک آدرس ایمیل در یک سند پیدا کنید. آدرس ایمیل می تواند هر آدرسی باشد، نه یک آدرس خاص. نوشتن یک عبارت ساده به شما کمک می کند تا الگو را به سرعت پیدا کنید زیرا از قبل ساختار آدرس ایمیل را می دانید.
یک عبارت منظم از کاراکترهای ویژه برای نشان دادن انواع مختلف الگوها استفاده می کند. مثلا:
.
(نقطه) کاراکتر خاصی است که می تواند با هر کاراکتری مطابقت داشته باشد.*
(ستاره) 0 بار یا بیشتر با کاراکتر قبلی مطابقت دارد.+
(به علاوه) یک یا چند بار با کاراکتر قبلی مطابقت دارد.?
(علامت سوال) کاراکتر قبلی را اختیاری می کند.(abc)
با هر یک از شخصیت ها مطابقت داردa
،b
، یاc
.(abc)
شخصیت ها را با هم گروه بندی می کند^
(caret) با شروع خط مطابقت دارد.$
(دلار) با انتهای خط مطابقت دارد.
اینها فقط تعدادی هستند. اگر می خواهید عمیق تر غواصی کنید و با الگوهای بیشتری آشنا شوید، می توانید به آن مراجعه کنید این سند از مایکروسافت.
بیایید یک عبارت منظم بسازیم که بررسی کند آیا مجموعه ای از اعداد یک کد پستی پنج رقمی هستند یا خیر. برای شروع نوشتن عبارت، از عبارت استفاده می کنیم ^
علامت (caret) همانطور که با شروع خط مطابقت دارد. در یک عبارت منظم، \d
با هر رقم و عددی در داخل پرانتزهای فرفری مطابقت دارد ({}
) با عنصر قبلی دقیقاً به تعداد دفعاتی که در داخل مهاربندها داده شده است مطابقت دارد. از لیست بالا، ما این را می دانیم $
برای تطبیق انتهای خط استفاده می شود.
با ترکیب این اطلاعات، یک عبارت منظم مانند زیر بدست می آوریم:
/^\d{5}$/
حال بیایید گرافیک زیر را برای درک بهتر بیان بررسی کنیم.
عبارت منظم برای مطابقت با کد پستی پنج رقمی
اکنون که درک اولیه ای از عبارات منظم و ساختار کلی آنها داریم، زمان خوبی است تا بررسی کنیم که چگونه این عبارات می توانند در یک تابع جاوا اسکریپت پیاده سازی شوند.
عبارات منظم جاوا اسکریپت
جاوا اسکریپت است محبوب ترین زبان برنامه نویسی در میان توسعه دهندگان از آنجایی که تقریباً همه برنامههای کاربردی وب به جاوا اسکریپت نیاز دارند، درک چگونگی استفاده از عبارات منظم در این زبان بسیار مهم است.
در جاوا اسکریپت، RegExp
شی برای تطبیق الگو استفاده می شود. این شی به دو صورت قابل استفاده است:
- با استفاده از نماد تحت اللفظی، که در آن یک الگو بین دو اسلش رو به جلو قالب بندی می شود
- با استفاده از نماد سازنده، که در آن یک رشته یا a
RegExp
شی منتقل می شود
نماد لفظی را می توان به سادگی به این صورت استفاده کرد:
const expr = /^\d{5}$/i;
از سوی دیگر، با نماد سازنده، باید از آن استفاده کنید RegExp
سازنده برای ایجاد یک نمونه از آن. در اینجا به نظر می رسد:
const expr = new RegExp(/^\d{5}$/, "i");
شما می توانید اطلاعات بیشتری در مورد شی RegExp از قسمت بخوانید اسناد رسمی MDN. اکنون، بیایید اهمیت اعتبارسنجی شماره تلفن و اجزای مختلف یک شماره تلفن را بررسی کنیم.
اعتبارسنجی شماره تلفن و اجزای سازنده
تایید شماره تلفن روی هنگام ذخیره شماره تلفن در پایگاه داده، سمت مشتری بسیار مهم است. بدون اعتبار سنجی مناسب، کد شما ممکن است رفتارهای غیرمنتظره ای از خود نشان دهد.
به عنوان مثال، فرض کنید از سرویسی استفاده می کنید که به کد کشور همراه با شماره تلفن نیاز دارد، اما کاربران شما به دلیل عدم تأیید اعتبار، آنها را درج نمی کنند. در حال حاضر، شما فقط شماره را دارید بدون کد کشور و سرویسی که پیام های متنی اس ام اس می فرستد ممکن است به این دلیل از کار بیفتد. این فقط یک سناریوی فرضی است. مشکلات دیگر حتی می توانند برنامه شما را خراب کنند. بسیار مهم است که داده های خود را به درستی مدیریت کنید تا اطمینان حاصل شود که داده های تمیز و ثابت را در پایگاه داده خود ذخیره می کنید.
به طور کلی یک شماره تلفن از چهار بخش تشکیل شده است:
- کد کشور: 1 تا 3 رقم اول (بسته به روی کشور) کشور شماره تلفن را تعریف کنید. این کد اجازه می دهد تا تماس به کشور صحیح هدایت شود. کد کشور نمی تواند با 0 شروع شود.
عنوان مقاله ای که در حال ویرایش آن هستید، “تأیید شماره تلفن در جاوا اسکریپت با عبارات منظم” است. تکه متن برای ویرایش:
- کد منطقه: همچنین به نام شهر یا کد شماره گیری نیز شناخته می شود، این قسمت از شماره به مسیریابی تماس به منطقه جغرافیایی صحیح در داخل کشور کمک می کند. در برخی کشورها، مانند ایالات متحده، کدهای منطقه همچنین می توانند مجموعه خاصی از شماره تلفن ها را برای یک سرویس خاص نشان دهند. علاوه بر این، در آمریکای شمالی، کد منطقه نمی تواند با 0 یا 1 شروع شود.
- پیشوند تلفن: این دنباله از اعداد توسط شرکت تلفن به یک دفتر مرکزی یا مرکز تلفن خاص اختصاص داده می شود و منطقه یا محله جغرافیایی خاص را محدودتر می کند.
- شماره خط: این شماره منحصربهفردی است که به خط تلفن خاص برای یک خانواده یا کسبوکار در منطقه پیشوند اختصاص داده میشود. این قسمت از شماره معمولاً تضمین می کند که هر شماره تلفن در یک کشور، منطقه و پیشوند منحصر به فرد است.
بدون احتساب کد کشور، ترکیب قسمت های باقیمانده منجر به یک شماره تلفن ده رقمی می شود که کد منطقه و پیش شماره تلفن هر کدام سه رقمی و شماره خط چهار رقمی است.
بیایید اکنون به نوشتن یک تابع جاوا اسکریپت برویم که یک شماره تلفن را تأیید می کند روی این معیارها با استفاده از عبارات منظم.
یک RegEx برای اعتبارسنجی شماره تلفن ایجاد کنید
ما قبلا ساختار اصلی شماره تلفن را درک کرده ایم. ما همچنین در مورد عبارات منظم و روش استفاده از آنها در جاوا اسکریپت یاد گرفتیم. در این بخش، یک تابع جاوا اسکریپت ساده می نویسیم که شماره تلفن های فرمت داده شده را تأیید می کند:
COUNTRY_CODE-AREA_CODE-TELEPHONE_PREFIX-LINE_NUMBER
به عنوان مثال، یک شماره تلفن معتبر برای عملکرد ما به این صورت خواهد بود +123-456-789-1234
، اما نه +012-123-456-7890
یا +12-123-456-789
، از آنجایی که این شماره تلفن ها از قوانین شماره تلفن هایی که قبلاً در مورد آن صحبت کردیم پیروی نمی کنند.
حالا بیایید به نوشتن عبارت منظم بپردازیم. ابتدا بیایید بررسی کنیم که آیا کد کشور 1 تا 3 رقمی است و با صفر شروع نمی شود.
برای نشان دادن شروع عبارت با قاعده، از علامت علامت (^
)، سپس تأیید کنید که یک پلاس در ابتدا وجود دارد. برای این منظور استفاده کنیم \+
، که مطابق با وجود مثبت در ابتدا خواهد بود. حال، برای اطمینان از اینکه ارقام کد کشور بین یک تا سه رقم است و رقم اول صفر نیست، میتوانیم چیزی شبیه به این بنویسیم: (1-9){1}(0-9){0,2}
. اینجا، (1-9){1}
مشخص می کند که هر رقمی از 1 تا 9 می تواند دقیقاً یک بار وجود داشته باشد و به همین ترتیب، (0-9){0,2}
نشان می دهد که هر رقمی از 0 تا 9 می تواند صفر تا دو برابر باشد.
برای جداکننده می توانیم a اضافه کنیم -
(فاصله) بین بخش های عدد. یکی -
را می توان پس از تأیید اعتبار کد کشور اضافه کرد. بنابراین، در این مرحله، regex به شکل زیر است:
^\+(1-9){1}(0-9){0,2}-$
را $
در انتها انتهای خط را مشخص می کند. اکنون، برای کد منطقه، این کاملا مشابه خواهد بود. کد منطقه نمی تواند با صفر یا یک شروع شود. بنابراین، قسمت اول خواهد بود (2-9){1}
. این مطابقت دارد که عدد اول بین 2 و 9 باشد. این تطابق یک بار رخ می دهد. سپس برای بقیه کدها می توانیم بنویسیم (0-9){2}
. این اطمینان حاصل می کند که دقیقاً دو رقم بعد از اولین رقم وجود دارد و برای هر رقم، محدوده بین 0 تا 9 است. باز هم جداکننده خط فاصله را در انتها اضافه کنید.
اکنون، regexp کامل به شکل زیر خواهد بود:
^\+(1-9){1}(0-9){0,2}-(2-9){1}(0-9){2}-$
|----Country Code---|-|---Area Code--|-|
بیایید دوباره از همان الگو برای بررسی پیشوند تلفن استفاده کنیم. بیایید فرض کنیم که پیش شماره تلفن نیز نمی تواند با صفر یا یک شروع شود. بنابراین، اضافه کردن (2-9){1}(0-9){2}
و یک خط فاصله دوباره عبارت را به این صورت در می آورد:
^\+(1-9){1}(0-9){0,2}-(2-9){1}(0-9){2}-(2-9){1}(0-9){2}-$
|----Country Code---|-|---Area Code--|-|--Tel Prefix--|-|
تنها قسمتی که اکنون باقی مانده است شماره خط است که می تواند هر رقمی با طول دقیقاً چهار باشد. این ساده تر از بقیه است. بیان این است (0-9){4}
.
بیان کامل به صورت زیر است:
^\+(1-9){1}(0-9){0,2}-(2-9){1}(0-9){2}-(2-9){1}(0-9){2}-(0-9){4}$
|----Country Code---|-|---Area Code--|-|--Tel Prefix--|-|-Line-|
حتما متوجه استفاده مکرر از بریس های فرفری شده اید. آنها برای مطابقت با نمونه های ارائه شده در داخل بریس استفاده می شوند. اگر رقم خاصی است، لایک کنید {1}
، دقیقاً یک بار با الگوی قبلی مطابقت دارد. با این حال، اگر یک محدوده است، مانند {0, 2}
، حداقل و حداکثر تعداد منطبق را تعریف می کند. بنابراین، در مورد {0, 2}
، حداقل صفر بار و حداکثر دو بار با الگو مطابقت دارد.
الگو آماده است. اکنون میتوانیم یک تابع ساده جاوا اسکریپت بنویسیم تا بررسی کنیم که آیا یک شماره تلفن با استفاده از عبارت معمولی معتبر است یا خیر. در اینجا تابع است:
function validatePhoneNumber(phoneNumber) {
// Define the regular expression pattern using RegExp object
const pattern = new RegExp("^\\+(1-9){1}(0-9){0,2}-(2-9){1}(0-9){2}-(2-9){1}(0-9){2}-(0-9){4}$");
// Test the phone number against the pattern
if (pattern.test(phoneNumber)) {
console.log("Phone number is valid");
return true;
} else {
console.log("Phone number is not valid");
return false;
}
}
validatePhoneNumber("+123-456-789-1234"); // true
validatePhoneNumber("+0-123-456-7890"); // false
validatePhoneNumber("+12-012-123-1234"); // false
عملکرد کاملاً ساده است. شماره تلفن را به عنوان ورودی می گیرد. الگوی عبارت منظم در یک متغیر به نام ذخیره می شود pattern
. الگو با استفاده از سازنده RegExp و ارسال عبارت به عنوان پارامتر به سازنده نمونه سازی می شود. سپس، شماره تلفن را با استفاده از test
روش موجود در شی با استفاده از عبارت if-else، بررسی می کنیم که آیا شماره تلفن از آزمون عبور کرده است یا خیر. اگر درست شد، true را برمیگردانیم و a را ارسال میکنیم console پیامی مبنی بر اینکه Phone number is valid
. در غیر این صورت false را برمی گرداند و a را نمایش می دهد console پیامی مبنی بر اینکه شماره تلفن معتبر نیست.
با این، ما خوب هستیم. اکنون، میتوانید شماره تلفنهای خود را تست کنید تا ببینید آیا معتبر هستند یا خیر.
خلاصه
هدف این مقاله ارائه یک نمای کلی از عبارات منظم، کاربرد آنها و روش استفاده از آنها برای اعتبارسنجی شماره تلفن بود. ما همچنین در مورد اجزای مختلف یک شماره تلفن و روش آزمایش هر جزء بحث کردیم.
با درک اولیه از عبارات منظم، اکنون می توانید الگوهای اضافی را کشف کنید. همچنین می توانید از ابزارهایی مانند Regex101 برای اعتبارسنجی عبارات خود به صورت آنلاین
(برچسبها برای ترجمه)# regex
منتشر شده در 1403-01-04 09:20:03