الگوها (RegExp Patterns)
در «عبارات منظم (Regular Expression)»، «الگو (Pattern)» متنِ هدف را توصیف می کند. با «پرچم ها (Flags)»، «کلاس کاراکتر»، «متاکاراکتر»، «گزاره ها (Assertions)» و «تکرارکننده» رفتار جستجو عوض می شود.
پرچم ها (Flags) در الگو
پرچم ها رفتار جستجو را تغییر می دهند: /g همه تطبیق ها، /i بدون توجه به بزرگی حروف، /m چندخطی، /s اجازه تطبیق نقطه با خط جدید، /u یونیکد، /v یونیکد پیشرفته، /y جست وجوی چسبنده.
let text = "Hello\nHELLO hello";
let pattern = /hello/gi;
let result = text.match(pattern);
کلاس های کاراکتری [ ]
کلاس کاراکتری یعنی مجموعه ای داخل [ ]. مثل [a-z] برای حروف کوچک یا [^0-9] برای «غیر عدد».
let text = "abc XYZ 123";
let pattern = /[a-z]/g;
let result = text.match(pattern);
متاکاراکترها (Metacharacters)
متاکاراکترها معنا دارند: . هر کاراکتر، \d رقم، \w حرف/عدد/زیرخط، \s فاصله و…
let text = "Price: 12.50 EUR";
let pattern = /\d+\.\d+/;
let result = text.match(pattern);
گزاره ها (Assertions)
گزاره ها مرز یا همسایه را می سنجند: ^ ابتدای رشته/خط، $ انتهای رشته/خط، \b مرز کلمه، و نگاه جلو/عقب.
let text = "Start\nEnd";
let pattern = /^Start/m;
let result = pattern.test(text);
تکرارکننده ها (Quantifiers)
تعداد را مشخص می کنند: + یک یا بیشتر، * صفر یا بیشتر، ? صفر یا یک، {n} دقیقاً n، {n,m} بازه، {n,} حداقل n.
let text = "ID: 1234, ZIP: 021";
let pattern = /\d{3,4}/g;
let result = text.match(pattern);
اشاره تکمیلی
نکته: برای جزئیات هر بخش، به صفحات داخلی سر بزن: تکرارکننده ها (RegExp Quantifiers)، کلاس های کاراکتری (RegExp Classes)، متاکاراکترها (RegExp Metachars)، و گزاره ها (RegExp Assertions).
جمع بندی سریع
- الگو، شکل جستجو را تعیین می کند.
- پرچم ها رفتار تطبیق را عوض می کنند.
- کلاس ها محدوده کاراکتر می دهند.
- متاکاراکترها نقش ویژه دارند.
- گزاره ها مرز و همسایه را می سنجند.