71- آموزش جاوااسکریپت | قسمت دوم - کاراکترهای خاص (Meta Characters) در عبارات باقاعده
در این بخش با نمادهای کنترلی یا Meta Characters در Regex آشنا میشویم. یاد میگیریم چگونه شروع و پایان یک رشته را کنترل کنیم، از کاراکترهای جایگزین (Wildcards) استفاده کنیم و بخشهایی از الگو را اختیاری کنیم.
پس از آشنایی با متدهای ارزیابی، در این بخش به سراغ قدرت واقعی عبارات باقاعده یعنی Meta Characters میرویم. این نمادها به ما اجازه میدهند الگوهای بسیار هوشمندی برای جستجو در متن بسازیم.
برای سادهسازی فرآیند تست، ابتدا یک تابع کمکی میسازیم که نتیجه مطابقت را در کنسول نمایش دهد:
function reTest(re, str) {
if (re.test(str)) {
console.log(`${str} matches ${re.source}`);
} else {
console.log(`${str} does not match ${re.source}`);
}
}
۱. نماد شروع (^) و پایان ($)
این دو نماد برای تعیین موقعیت دقیق الگو در رشته به کار میروند:
- نماد
^(Carat): رشته مورد نظر حتماً باید با الگوی بعد از این نماد شروع شود. - نماد
$(Dollar): رشته مورد نظر حتماً باید با الگوی قبل از این نماد تمام شود.
let re;
// شروع حتمی با h
re = /^h/i;
// پایان حتمی با d
re = /d$/i;
// شروع و پایان دقیق (فقط کلمه hello مجاز است)
re = /^hello$/i;
reTest(re, 'hello'); // Match
۲. نقطه (.) به عنوان جایگزین عمومی
کاراکتر نقطه (.) نمایانگر هر کاراکتری (فقط یک عدد) است. این نماد مثل یک کارت وحشی (Wildcard) عمل میکند.
re = /h.llo/i; // به جای نقطه هر کاراکتری (نامه، عدد یا علامت) میتواند باشد
reTest(re, 'h7llo'); // Match
۳. ستاره (*) برای تکرار صفر یا بیشتر
نماد * به این معناست که کاراکتر قبلی میتواند صفر بار یا به تعداد نامحدود تکرار شود.
re = /h*llo/i;
reTest(re, 'hllo'); // Match (صفر بار تکرار h)
reTest(re, 'hhhhhllo'); // Match (تکرار زیاد h)
۴. علامت سوال (?) برای حالت اختیاری
اگر بخواهیم یک کاراکتر در الگو وجود داشته باشد اما وجود نداشتن آن هم باعث خطا نشود، از ? بعد از آن کاراکتر استفاده میکنیم. این مورد برای کلماتی که دو نوع املای متفاوت دارند (مثل Gray و Grey) بسیار مفید است:
re = /gra?e?y/i; // هم a و هم e اختیاری هستند
reTest(re, 'gray'); // Match
reTest(re, 'grey'); // Match
reTest(re, 'gy'); // Match (چون هر دو اختیاری بودند)
۵. خنثیسازی یا Escape کردن کاراکترها (\)
اگر بخواهید از خودِ نمادهای خاص (مثل ? یا ^) به عنوان یک کاراکتر معمولی در متن استفاده کنید، باید از بکاسلش (\) قبل از آنها استفاده کنید تا معنای برنامهنویسی خود را از دست بدهند:
re = /gray\?/i; // در اینجا علامت سوال بخشی از متن است، نه نماد اختیاری
reTest(re, 'gray?'); // Match
reTest(re, 'gray'); // Does not match
در بخش بعدی، به سراغ مجموعه کاراکترها (Brackets)، کوانتیفایرها (Braces) و گروهبندی (Parentheses) خواهیم رفت.
تگ ها
عنوان سئو
توضیحات سئو