متدهای testexec

متدهای test و exec در عبارات منظم جاوااسکریپت

عبارات منظم (Regular Expressions) یکی از قدرتمندترین ابزارها برای پردازش و تحلیل رشته‌ها در جاوااسکریپت محسوب می‌شوند. دو متد پرکاربرد در این زمینه test() و exec() هستند که هر کدام کاربردهای خاص خود را دارند.


متد test()

این متد ساده‌ترین راه برای بررسی وجود یک الگو در رشته است. خروجی آن یک مقدار بولین (true/false) است که نشان می‌دهد آیا الگو در رشته وجود دارد یا خیر.

مثال نتیجه
/hello/.test("hello world") true
/\d{3}/.test("abc") false

کاربردهای اصلی متد test() شامل:

  • اعتبارسنجی فرم‌ها (مانند بررسی ایمیل یا شماره تلفن)
  • بررسی وجود زیررشته خاص در متن
  • شرط‌های ساده برای پردازش رشته‌ها

متد exec()

این متد پیچیده‌تر از test() عمل می‌کند و اطلاعات کامل‌تری درباره تطابق الگو برمی‌گرداند. خروجی آن یک آرایه است که شامل:

  1. متن تطابق یافته
  2. گروه‌های捕获 شده (در صورت وجود)
  3. index تطابق در رشته اصلی
  4. رشته ورودی
مثال:
let result = /(\d{3})-(\d{3})/.exec("تلفن: 123-456"); نتیجه شامل ['123-456', '123', '456', index: 6, input: 'تلفن: 123-456'] خواهد بود.

تفاوت‌های کلیدی بین این دو متد:

متد test() متد exec()
برمی‌گرداند Boolean برمی‌گرداند Array/null
سریع‌تر برای بررسی ساده اطلاعات کامل‌تر
حافظه کمتری مصرف می‌کند برای پردازش پیچیده مناسب است

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


نکات پیشرفته

هنگام استفاده از این متدها به این نکات توجه کنید:

  • در صورت استفاده از پرچم g (جستجوی سراسری)، رفتار exec() تغییر می‌کند
  • متد test() نیز هنگام استفاده با پرچم g، مقدار lastIndex را به روز می‌کند
  • برای عملکرد بهتر، عبارات منظم پیچیده را در متغیر ذخیره کنید
  • در حلقه‌ها مراقب به‌روزرسانی lastIndex باشید

با ترکیب این دو متد می‌توانید عملیات‌های قدرتمندی روی متن‌ها انجام دهید. انتخاب بین آنها بستگی به نیاز شما دارد: اگر فقط به وجود یا عدم وجود الگو نیاز دارید، test() گزینه بهینه‌تری است، اما اگر به اطلاعات دقیق‌تر درباره تطابق نیاز دارید، exec() انتخاب بهتری خواهد بود.