اعتبارسنجی شماره تلفن در جاوا اسکریپت با عبارات منظم

اعتبارسنجی شماره تلفن در جاوا اسکریپت با عبارات منظم

معرفی

چه متوجه شوید یا نه، داده ها به بخش مهمی از زندگی روزمره ما تبدیل شده اند. از سفارش آنلاین غذا گرفته تا جستجوی غذای گربه، ما دائما در حال ارسال و دریافت اطلاعات هستیم. به عنوان توسعه دهندگان برنامه های کاربردی وب، مسئولیت ما این است که اطمینان حاصل کنیم که ورودی های کاربر در قالب مشخص شده است تا پایگاه داده داده ها را به درستی درک کند و برنامه قوی بماند.

اعتبارسنجی شماره تلفن مهم است زیرا تضمین می کند که داده ها در یک قالب ثابت در سراسر پایگاه داده ذخیره می شوند. برای مثال، کاربران ممکن است نیاز به توضیح داشته باشند که آیا باید کد کشور را قبل از شماره تلفن خود وارد کنند یا خیر. با وجود اعتبار سنجی مناسب، کاربران به راحتی می توانند تشخیص دهند که آیا آن مورد نیاز است یا خیر. به طور مشابه، تجربه کاربر با یک قالب ثابت بهبود می‌یابد، زیرا می‌دانید از کاربران چه انتظاری دارید و می‌توانید منطق را بر این اساس پیاده‌سازی کنید. اگر کد در مرحله بعد به دلیل داده های ناسازگار شکسته شود، تجربه ضعیفی برای کاربران خواهد بود.

عبارات منظم ابزار قدرتمندی برای تطبیق الگو هستند. آنها انعطاف پذیری را برای مطابقت با الگوهای انواع مختلف، بسته به مورد استفاده شما، فراهم می کنند. بعلاوه، عبارات منظم زبانی آگنوستیک هستند، و منطق اعتبارسنجی شما را قابل حمل تر می کند، زیرا می توانید به راحتی اعتبار سنجی اصلی را ادغام کنید. کار با 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. اکنون، بیایید اهمیت اعتبارسنجی شماره تلفن و اجزای مختلف یک شماره تلفن را بررسی کنیم.

اعتبارسنجی شماره تلفن و اجزای سازنده

اعتبارسنجی شماره تلفن در سمت مشتری هنگام ذخیره شماره تلفن در پایگاه داده شما بسیار مهم است. بدون اعتبار سنجی مناسب، کد شما ممکن است رفتارهای غیرمنتظره ای از خود نشان دهد.

راهنمای عملی و عملی ما برای یادگیری Git را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google Git را متوقف کنید و در واقع یاد گرفتن آی تی!

به عنوان مثال، فرض کنید از سرویسی استفاده می کنید که به کد کشور همراه با شماره تلفن نیاز دارد، اما کاربران شما به دلیل عدم تأیید اعتبار، آنها را درج نمی کنند. در حال حاضر، شما فقط شماره را دارید بدون کد کشور و سرویسی که پیام های متنی اس ام اس می فرستد ممکن است به این دلیل از کار بیفتد. این فقط یک سناریوی فرضی است. مشکلات دیگر حتی می توانند برنامه شما را خراب کنند. بسیار مهم است که داده های خود را به درستی مدیریت کنید تا اطمینان حاصل شود که داده های تمیز و ثابت را در پایگاه داده خود ذخیره می کنید.

به طور کلی یک شماره تلفن از چهار بخش تشکیل شده است:

  • کد کشور: 1 تا 3 رقم اول (بسته به کشور) کشور شماره تلفن را مشخص می کند. این کد اجازه می دهد تا تماس به کشور صحیح هدایت شود. کد کشور نمی تواند با 0 شروع شود.

مقاله ای که در حال ویرایش آن هستید با عنوان «تأیید شماره تلفن در جاوا اسکریپت با عبارات منظم» است. تکه متن برای ویرایش:

  • کد منطقه: همچنین به نام شهر یا کد شماره گیری نیز شناخته می شود، این قسمت از شماره به مسیریابی تماس به منطقه جغرافیایی صحیح در داخل کشور کمک می کند. در برخی کشورها، مانند ایالات متحده، کدهای منطقه همچنین می توانند مجموعه خاصی از شماره تلفن ها را برای یک سرویس خاص نشان دهند. علاوه بر این، در آمریکای شمالی، کد منطقه نمی تواند با 0 یا 1 شروع شود.
  • پیشوند تلفن: این دنباله از اعداد توسط شرکت تلفن به یک دفتر مرکزی یا مرکز تلفن خاص اختصاص داده می شود و منطقه یا محله جغرافیایی خاص را محدودتر می کند.
  • شماره خط: این شماره منحصربه‌فردی است که به خط تلفن خاص برای یک خانواده یا کسب‌وکار در منطقه پیشوند اختصاص داده می‌شود. این قسمت از شماره معمولاً تضمین می کند که هر شماره تلفن در یک کشور، منطقه و پیشوند منحصر به فرد است.

بدون احتساب کد کشور، ترکیب قسمت های باقیمانده منجر به یک شماره تلفن ده رقمی می شود که کد منطقه و پیش شماره تلفن هر کدام سه رقمی و شماره خط چهار رقمی است.

اکنون به نوشتن یک تابع جاوا اسکریپت می پردازیم که یک شماره تلفن را بر اساس این معیارها با استفاده از عبارات معمولی تأیید می کند.

یک RegEx برای اعتبارسنجی شماره تلفن ایجاد کنید

ما قبلا ساختار اصلی شماره تلفن را درک کرده ایم. ما همچنین در مورد عبارات منظم و نحوه استفاده از آنها در جاوا اسکریپت یاد گرفتیم. در این بخش، یک تابع جاوا اسکریپت ساده می نویسیم که شماره تلفن های فرمت داده شده را تأیید می کند:

COUNTRY_CODE-AREA_CODE-TELEPHONE_PREFIX-LINE_NUMBER

به عنوان مثال، یک شماره تلفن معتبر برای عملکرد ما به این صورت خواهد بود +123-456-789-1234، اما نه +012-123-456-7890 or +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}-$

La $ در انتها انتهای خط را مشخص می کند. اکنون، برای کد منطقه، این کاملا مشابه خواهد بود. کد منطقه نمی تواند با صفر یا یک شروع شود. بنابراین، بخش اول خواهد بود [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) { 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}$"); 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"); validatePhoneNumber("+0-123-456-7890"); validatePhoneNumber("+12-012-123-1234"); 

عملکرد کاملاً ساده است. شماره تلفن را به عنوان ورودی می گیرد. الگوی عبارت منظم در یک متغیر به نام ذخیره می شود pattern. الگو با استفاده از سازنده RegExp و ارسال عبارت به عنوان پارامتر به سازنده نمونه سازی می شود. سپس، شماره تلفن را با استفاده از test روش موجود در شی با استفاده از عبارت if-else، بررسی می کنیم که آیا شماره تلفن از آزمون عبور کرده است یا خیر. اگر اینطور شد، ما true را برمی‌گردانیم و یک پیام کنسول ارسال می‌کنیم که نشان می‌دهد Phone number is valid. در غیر این صورت، false را برمی گرداند و یک پیام کنسول نشان می دهد که شماره تلفن معتبر نیست.

با این، ما خوب هستیم. اکنون، می‌توانید شماره تلفن‌های خود را تست کنید تا ببینید آیا معتبر هستند یا خیر.

خلاصه

هدف این مقاله ارائه یک نمای کلی از عبارات منظم، کاربرد آنها و نحوه استفاده از آنها برای اعتبارسنجی شماره تلفن بود. ما همچنین در مورد اجزای مختلف یک شماره تلفن و نحوه آزمایش هر جزء بحث کردیم.

با درک اولیه از عبارات منظم، اکنون می توانید الگوهای اضافی را کشف کنید. همچنین می توانید از ابزارهایی مانند Regex101 برای اعتبارسنجی عبارات خود به صورت آنلاین

تمبر زمان:

بیشتر از Stackabuse