گزاره ها (RegExp Assertions)
در «عبارات منظم (Regular Expression)»، «گزاره (Assertion)» یعنی شرط مکان یا همسایه. با آن می فهمیم الگو کجا شروع یا تمام می شود یا قبل و بعدش چیست.
مرز رشته و کلمه
علامت ^ شروع رشته را می گیرد و $ پایان را. همچنین \b مرز کلمه است و \B «غیرِ مرز کلمه» است.
const pattern = /^W3Schools/;
let text = "W3Schools Tutorial";
let result = pattern.test(text);
const pattern = /W3Schools$/;
let text = "Hello W3Schools";
let result = pattern.test(text);
let text = "HELLO, LOOK AT YOU!";
let result = text.search(/\bLO/);
let text = "HELLO, LOOK AT YOU!";
let result = text.search(/LO\b/);
نگاه جلو (Lookahead)
الگوی x(?=y) یعنی «x» فقط وقتی که بعدش «y» باشد. مثل چک کردن برچسب بعدی.
let text = "W3Schools Tutorials";
let pattern = /W3Schools(?= Tutorials)/;
let result = pattern.test(text);
نگاه جلو منفی (Negative Lookahead)
الگوی x(?!y) یعنی «x» فقط وقتی که بعدش «y» نباشد.
let text = "W3Schools Tutorials";
let pattern = /W3Schools(?! Tutorials)/;
let result = pattern.test(text);
نگاه عقب (Lookbehind)
الگوی (?<=y)x یعنی «x» فقط وقتی که قبلش «y» باشد.
let text = "Hello W3Schools";
let pattern = /(?<=Hello )W3Schools/;
let result = pattern.test(text);
نگاه عقب منفی (Negative Lookbehind)
الگوی (?<!y)x یعنی «x» فقط وقتی که قبلش «y» نباشد.
let text = "Hello W3Schools";
let pattern = /(?<!Hello ) W3Schools/;
let result = pattern.test(text);
گروه گیری (Capturing Groups)
پرنتز (x) الگو را «می گیرد». بعداً نتیجه گروه را برمی داریم.
let text = "Haha, haha, haha.";
const pattern = /(haha)+/;
let result = text.match(pattern);
گروه های نام دار (Named Groups)
با (?<name>...) گروه را اسم گذاری کن. بعد با groups بخوان.
const text = "Name: John Doe";
const regex = /(?<firstName>\w+) (?<lastName>\w+)/;
const match = text.match(regex);
let fName = match.groups.firstName;
let lName = match.groups.lastName;
تغییر پرچم ها داخل گروه
الگوی (?flag:x) پرچم ها را فقط برای «x» فعال می کند.
let text = "W3Schools tutorials.";
const pattern = /(?i:WShools) tutorials/;
let result = pattern.test(text);
let text = "W3Schools Tutorials.";
const pattern = /(?i:W3Sshools) tutorials/;
let result = pattern.test(text);
تمرین های سریع
- با
^بررسی کن متن با «Hi» شروع شود. - با
\bکلمات «cat» را جدا کن. - با
(?=)فقط اعداد قبل از «kg» را بگیر.
نکته: برای یادآوری نمادها، بخش متاکاراکترها (RegExp Metachars) را ببین. همچنین برای کلاس ها به کلاس های کاراکتری (RegExp Classes) برو. برای تعداد تکرارها هم کمّی سازها (RegExp Quantifiers) مناسب است.
جمع بندی سریع
^و$مرز رشته اند.\bمرز کلمه است.(?=)و(?!)نگاه جلو هستند.(?<=)و(?<!)نگاه عقب هستند.- گروه گیری نتایج را مرتب می کند.