RegExp Flags

در جاوااسکریپت، Flags یا پرچم‌ها برای تغییر رفتار Regular Expression استفاده می‌شن.
پرچم‌ها بعد از /.../ نوشته می‌شن و روی نحوه‌ی جستجو و تطبیق الگو تأثیر می‌ذارن.

🔹 پرچم‌های پرکاربرد

1. g → Global (جستجوی سراسری)

  • بدون g فقط اولین نتیجه پیدا میشه.

  • با g همه‌ی موارد پیدا می‌شن.

let text = "JS is JS"; console.log(text.match(/JS/)); // ["JS"] console.log(text.match(/JS/g)); // ["JS", "JS"]

2. i → Ignore Case (بی‌توجه به بزرگی/کوچکی حروف)

  • باعث میشه "A" و "a" یکسان در نظر گرفته بشن.

let text = "Hello hello"; console.log(text.match(/hello/)); // ["hello"] console.log(text.match(/hello/i)); // ["Hello"]

3. m → Multiline (حالت چندخطی)

  • باعث میشه ^ و $ ابتدای/انتهای هر خط رو بررسی کنن (نه فقط کل رشته).

let text = "Line1\nLine2"; console.log(text.match(/^Line2/)); // null console.log(text.match(/^Line2/m)); // ["Line2"]

4. s → Dotall (شامل خط‌جدید در .)

  • به طور پیش‌فرض . همه‌چیز جز خط‌جدید (\n) رو می‌گیره.

  • با s حتی خط‌جدید هم شامل میشه.

let text = "Hello\nWorld"; console.log(/Hello.World/.test(text)); // false console.log(/Hello.World/s.test(text)); // true

5. u → Unicode

  • برای پشتیبانی از کاراکترهای یونیکد (مثل شکلک‌ها و زبان‌های مختلف).

let text = "😊"; console.log(/\u{1F60A}/.test(text)); // false console.log(/\u{1F60A}/u.test(text)); // true

6. y → Sticky (جستجوی چسبنده)

  • جستجو رو فقط از موقعیت فعلی رشته ادامه میده.

let text = "abc abc"; let regex = /abc/y; regex.lastIndex = 0; console.log(regex.test(text)); // true regex.lastIndex = 1; console.log(regex.test(text)); // false

✅ خلاصه

  • g → جستجوی همه‌ی موارد

  • i → بی‌تفاوتی نسبت به بزرگی/کوچکی حروف

  • m → حالت چندخطی

  • s → فعال‌کردن dotall (شامل \n)

  • u → پشتیبانی از Unicode

  • y → جستجوی چسبنده