پرچم ها (RegExp Flags)
وقتی «عبارات منظم (Regular Expression)» می نویسی، «پرچم ها (Flags)» رفتار جستجو را عوض می کنند. مثلاً جستجو را سراسری می کنند یا حساسیت به حروف را برمی دارند.
ساختار کلی پرچم ها
الگو این طوری نوشته می شود: /pattern/flags. این یعنی الگو و بعد پرچم ها.
/pattern/flags;
/g: جستجوی سراسری
پرچم «g» همه انطباق ها را برمی گرداند، نه فقط اولی.
let text = "Is this all there is?";
const pattern = /is/g;
let result = text.match(pattern);
/i: بی تفاوت به حروف
پرچم «i» حروف بزرگ کوچک را یکی می بیند. پس «abc» با «ABC» برابر است.
let text = "Visit W3Schools";
const pattern = /w3schools/i;
let result = text.match(pattern);
/d: اندیس های انطباق
پرچم «d» شروع و پایان هر انطباق را برمی گرداند. این کمک می کند محدوده دقیق را بدانیم.
let text = "aaaabb";
const pattern = /(aa)(bb)/d;
let result = text.match(pattern);
/s: دات اُل (DotAll)
پرچم «s» باعث می شود «.» حتی نویسه خط جدید \n را هم بگیرد.
let text = "Line\nLine.";
const pattern = /Line./gs;
let result = text.match(pattern);
/y: جستجوی چسبنده (Sticky)
پرچم «y» از محل lastIndex دقیقاً ادامه می دهد. برای پردازش مرحله ای عالی است.
let text = "abc def ghi";
const pattern = /\w+/y;
pattern.lastIndex = 4;
let result = text.match(pattern);
/u: پشتیبانی یونیکد
پرچم «u» الگو را یونیکد واقعی می بیند. بنابراین ایموجی ها درست پردازش می شوند.
let text = "䷀";
const pattern = /\u{04DC0}/u;
let result = pattern.test(text);
/v: مجموعه های یونیکد پیشرفته
پرچم «v» نسخه تقویتی «u» است. ویژگی های یونیکد بیشتری فعال می شود.
let text = "Hello 😄";
const pattern = /\p{Emoji}/v;
let result = pattern.test(text);
ویژگی های شی RegExp برای پرچم ها
می توانی بفهمی کدام پرچم فعال است. این ویژگی ها کمک می کنند.
const pattern = /W3Schools/s;
let isDotAll = pattern.dotAll;
const pattern = /W3Schools/g;
let isGlobal = pattern.global;
گام های عملی پیشنهادی
- /g را تمرین کن و همه انطباق ها را بگیر.
- /i را تست کن و تفاوت حروف را نادیده بگیر.
- /s را روی متن چندخطی امتحان کن.
نکته: برای مرور مفاهیم پایه عبارات منظم به عبارات منظم (RegExp) برو. برای کاراکترها هم کلاس های کاراکتری را ببین.
جمع بندی سریع
- /g همه نتایج را می گیرد.
- /i حروف را بی اهمیت می کند.
- /s نقطه را چندخطی می کند.
- /y از محل قبلی می چسبد.
- /u و /v برای یونیکدند.