عبارات منظم (RegExp)
می خواهی توی متن، سریع الگو پیدا کنی؟ «عبارات منظم (Regular Expression)» یک «الگو (Pattern)» برای جستجو، جایگزینی و اعتبارسنجی متن است. شیء «RegExp» این کارها را در جاوااسکریپت انجام می دهد.
شروع سریع: جستجوی بدون حساسیت به حروف
پرچم «i» یعنی حروف بزرگ و کوچک فرقی ندارند.
let text = "Visit W3Schools";
let n = text.search(/w3schools/i);
نگارش عبارت منظم
ساختار کلی به صورت «/الگو/پرچم ها» است.
// شکل کلی
/pattern/flags;
متدهای متنی مهم
سه متد رایج: match آرایه می دهد، replace رشته جدید می دهد، search موقعیت را می دهد.
// match: جستجو و خروجی آرایه
let text = "Visit W3Schools";
let found = text.match(/W3schools/);
// replace: جایگزینی متن با الگو
let text = "Visit Microsoft!";
let result = text.replace(/Microsoft/i, "W3Schools");
// search: موقعیت اولین انطباق
let text = "Visit W3Schools";
let index = text.search(/W3Schools/);
گزینش (Alternation) با |
علامت «|» یعنی این یا آن. برای چند رنگ نمونه ببین.
let text = "Black, white, red, green, blue, yellow.";
let result = text.match(/red|green|blue/g);
پرچم ها (Flags): g و i
پرچم «g» همه انطباق ها را می گیرد. پرچم «i» حساسیت حروف را برمی دارد.
let text = "Is this all there is?";
const pattern = /is/g;
let result = text.match(pattern);
let text = "Visit W3Schools";
const pattern = /w3schools/i;
let result = text.match(pattern);
متاکاراکترها: \d ، \w ، \s
متاکاراکتر یعنی نمادی با معنی خاص. \d عدد، \w نویسه کلمه، \s فاصله را می گیرد.
let text = "Give 100%!";
const pattern = /\d/g;
let result = text.match(pattern);
let text = "Give 100%!";
const pattern = /\w/g;
let result = text.match(pattern);
تکرارها (Quantifiers)
تکرارها تعداد را تعیین می کنند. «x*» صفر یا بیشتر، «x?» صفر یا یک، «x{n}» دقیقاً n بار.
let text = "1, 100 or 1000?";
const pattern = /10?/g;
let result = text.match(pattern);
مرزها و تأییدها (Assertions)
علامت «^» شروع رشته را می گیرد. علامت «$» پایان رشته را می گیرد.
const pattern = /^W3Schools/;
let text = "W3Schools Tutorial";
let ok = pattern.test(text);
const pattern = /W3Schools$/;
let text = "Hello W3Schools";
let ok = pattern.test(text);
کلاس های کاراکتری [ ]
داخل براکت «[]» هرکدام بخورد، قبول است. بازه ها مثل [0-9] همه اعدادند.
let text = "More than 1000 times";
const pattern = /[0-9]/g;
let result = text.match(pattern);
جمع بندی سریع
- الگو را با /pattern/flags بساز.
- match آرایه، replace رشته جدید، search موقعیت می دهد.
- g همه نتایج؛ i بی تفاوت به حروف.
- \d عدد، \w نویسه کلمه، \s فاصله.
- ^ شروع، $ پایان، [a-z] بازه است.
نکته: برای ادامه پرچم ها، به عبارات منظم (RegExp) پرچم ها برو؛ و برای مرور قبلی تصادفی (Math Random) را ببین.