آموزش عبارات منظم (Regex) در جاوااسکریپت از صفر؛ بررسی الگوهای متنی

۱۴۰۵/۰۸/۱۳ | چهارشنبه، ۱۳ آبان
دوره آموزشی ویژه 4 اپیزود اول تمام دوره های آموزشی ویدیویی رایگان میباشد دانلود رایگان

دورهٔ جامع CSS از صفر

آموزش CSS از صفر در ۲۲ ویدیو: مدل جعبه، انتخاب‌گر، فلکس‌باکس، گرید، واکنش‌گرایی، متغیرها، انیمیشن و معماری، تا پروژهٔ کامل صفحهٔ محصول؛ کد کنار خروجی ...

مدرس دوره : تیم 22 اپیزود ویدیویی 03 ساعت و 33 دقیقه و 59 ثانیه آموزش ویدیویی
متن پرونده شماره 95 - جاوااسکریپت

عبارات منظم یا Regular Expressions زبانی کوچک برای توصیف الگوهای متنی هستند. فرض کنید می‌خواهید بررسی کنید کاربر یک ایمیل معتبر وارد کرده یا نه، یا همه اعداد را از یک متن استخراج کنید؛ بدون Regex مجبور می‌شدید ده‌ها خط کد بنویسید، اما با آن این کارها در یک خط انجام می‌شود. در این مقاله از صفر شروع می‌کنیم و قدم‌به‌قدم جلو می‌رویم.

ساخت اولین Regex

در جاوااسکریپت دو راه برای ساخت عبارت منظم وجود دارد: سینتکس مستقیم بین دو اسلش که رایج‌تر است، یا سازنده RegExp. متد test بررسی می‌کند که آیا الگو در متن وجود دارد یا نه:

const pattern = /جاوااسکریپت/;

console.log(pattern.test("من جاوااسکریپت دوست دارم"));   // true
console.log(pattern.test("من پایتون دوست دارم"));        // false

کلاس‌های کاراکتری پرکاربرد

به‌جای نوشتن یک حرف مشخص، می‌توان یک دسته کامل از کاراکترها را تعیین کرد. مهم‌ترین آن‌ها d\ یعنی هر رقم، w\ یعنی هر حرف یا رقم انگلیسی و s\ یعنی فاصله خالی است. حروف بزرگ آن‌ها معنی برعکس می‌دهد:

const phoneRegex = /^\d{11}$/;   // دقیقاً 11 رقم

console.log(phoneRegex.test("09123456789"));   // true
console.log(phoneRegex.test("0912abc"));       // false

const spaceRegex = /\s/;
console.log(spaceRegex.test("سلام دنیا"));     // true چون فاصله دارد

لنگرها و تکرارها

علامت ^ یعنی ابتدای رشته و $ یعنی انتهای رشته؛ این دو را لنگر می‌نامند و برای اعتبارسنجی کامل یک ورودی ضروری‌اند. برای مشخص کردن تعداد تکرار هم از { } استفاده می‌کنیم؛ مثلاً {4} یعنی دقیقاً چهار بار و + یعنی یک بار یا بیشتر:

const postalCode = /^\d{10}$/;      // کد پستی 10 رقمی
const hasDigits = /\d+/;            // حداقل یک رقم پیدا شود

console.log(postalCode.test("1234567890"));   // true
console.log(hasDigits.test("کد 123 آمد"));    // true
محصول اورجینال INZIP
قالب وردپرس باریستا مخصوص کافه تم نسکافه ای روشن (دو زبانه)

قالب وردپرس باریستا مخصوص کافه تم نسکافه ای روشن (دو زبانه)

دانلود پوسته وردپرس باریستا؛ قالب کافیشاپ، رُستری قهوه و فروشگاه قهوه دوزبانه با منوی رومیزی، رزرو آنلاین میز با کد پیامکی و ووکامرس. طراحی اختصاصی inzip.ir

تحویل آنی آپدیت رایگان بدون قفل لایسنس پشتیبانی واقعی
۳,۹۹۰,۰۰۰ تومان ۲,۹۶۰,۰۰۰ تومان
بازدید و دانلود آنی
٪۲۶
تخفیف ویژه
سود شما
۱,۰۳۰,۰۰۰ تومان

اعتبارسنجی ایمیل

نمونه کلاسیک کاربرد Regex، بررسی ساختار ایمیل است. الگوی زیر یک بررسی پایه انجام می‌دهد: بخشی از حروف و ارقام، علامت @، نام دامنه و پسوند آن:

const emailRegex = /^[\w.]+@[\w]+\.[a-z]{2,}$/i;

console.log(emailRegex.test("user@example.com"));   // true
console.log(emailRegex.test("userexample.com"));    // false

حرف i در انتهای الگو یک Flag است و باعث می‌شود جستجو به بزرگی و کوچکی حروف حساس نباشد. پرکاربردترین Flagها عبارت‌اند از i برای عدم حساسیت به حروف و g برای یافتن همه موارد به‌جای اولین مورد.

استخراج اطلاعات با match

متد match نتایج مطابق الگو را به‌صورت آرایه برمی‌گرداند. با استفاده از Flag سراسری g می‌توانید همه موارد را یکجا استخراج کنید:

const text = "قیمت اول 2500 و قیمت دوم 4800 تومان است";
const numbers = text.match(/\d+/g);

console.log(numbers);   // ["2500", "4800"]

جایگزینی هوشمند با replace

ترکیب replace با Regex امکان جایگزینی الگوها را می‌دهد، نه فقط متن‌های ثابت. مثلاً می‌توانیم همه اعداد یک متن را حذف کنیم یا فاصله‌های اضافی را یکی کنیم:

const dirty = "قیمت2500تومان";
console.log(dirty.replace(/\d+/g, "*"));   // قیمت*تومان

const spaced = "سلام     دنیا";
console.log(spaced.replace(/\s+/g, " "));   // سلام دنیا

نکات مهم برای شروع

Regex در نگاه اول ترسناک است اما با تمرین ساده می‌شود. توصیه می‌کنیم الگوهای پیچیده را مرحله‌به‌مرحله بسازید و هر بخش را جداگانه تست کنید. ابزارهای آنلاین تست Regex هم نقشی مانند آزمایشگاه دارند و نتیجه را هم‌زمان نشان می‌دهند. همچنین به خاطر داشته باشید نیازی نیست همه چیز را با Regex حل کنید؛ گاهی یک includes ساده کار را راه می‌اندازد.

جمع‌بندی

عبارات منظم ابزاری قدرتمند برای اعتبارسنجی فرم‌ها، جستجو و استخراج داده از متن هستند. در این مقاله با ساختار کلی، کلاس‌های کاراکتری، لنگرها، تکرارها و متدهای test، match و replace آشنا شدید. حالا می‌توانید اعتبارسنجی‌های حرفه‌ای برای شماره موبایل، کد ملی و ایمیل بنویسید.

برچسب‌های این مقاله
  • regex در جاوااسکریپت
  • عبارات منظم جاوااسکریپت
  • regular expressions
  • اعتبارسنجی ایمیل با regex
  • متد test در جاوااسکریپت
  • متد match
  • آموزش جاوااسکریپت
  • الگوی متنی
٪۴۱
دوره اختصاصی INZIP

دورهٔ جامع HTML از صفر

آموزش حرفه ای HTML از صفر در ۱۶ ویدیو: سند، متن، لینک، تصویر، جدول، فرم، معنایی‌سازی، دسترس‌پذیری و سئو، تا پروژهٔ کامل صفحهٔ فروشگاه محصول.

تماشای آنلاین + دانلود دسترسی آنی و همیشگی به‌روزرسانی رایگان کیفیت Full HD
۹۹۰,۰۰۰ تومان ۵۹۰,۰۰۰ تومان سود شما ۴۰۰,۰۰۰ تومان
مشاهده سریال