RegExp در JS چیست؟
کلمه RegExp، مخفف عبارت Regular Expressions به معنای عبارات با قاعده است.
عبارت با قاعده، دنباله ای از کاراکترها است که یک الگوی جستجو را تشکیل می دهد.
وقتی داده ها را در نوشتاری جستجو می کنیم، می توانیم از این الگوی جستجو برای توصیف آنچه جستجو می کنیم، استفاده کنیم.
یک عبارت با قاعده، می تواند یک کاراکتر یا یک الگوی پیچیده تر باشد.
الگوی جستجو را می توان برای جستجوی متن و عملیات جایگزینی متن استفاده کرد.
نوع نگارش:
/pattern/modifiers;
/pnldev/i;
در مثال بالا:
- /pnldev/i یک عبارت با قاعده است. (regular expression)
- pnldev یک الگو (برای استفاده در جستجو) است. (pattern)
- i یک اصلاح کننده است که جستجو را تغییر می دهد تا به حروف کوچک و بزرگ حساس باشد. (modifier)
استفاده از متدهای رشته
در JavaScript، عبارات با قاعده اغلب با 2 متد رشته ای استفاده می شوند:
- متد ()search: از یک عبارت برای جستجوی مطابقت استفاده می کند و موقعیت مطابقت را برمی گرداند.
- متد ()replace: یک رشته اصلاح شده را برمی گرداند که در آن الگو جایگزین می شود.
استفاده از متد search() با یک رشته
متد search()، یک رشته را برای یک مقدار مشخص، جستجو می کند و موقعیت مطابقت را برمی گرداند:
let text = "Hello PNLdev";
let n = text.search("PNLdev"); // 6
استفاده از متد search() با یک عبارت با قاعده
let text = "Hello PNLdev";
let n = text.search(/PNLdev/i); // 6
استفاده از متد replace() با یک رشته
متد replace()، یک مقدار مشخص شده را با مقدار دیگری در یک رشته، جایگزین می کند:
let text = "Hello World";
text.replace("World", "PNLdev"); // Hello PNLdev
استفاده از متد search() با یک عبارت با قاعده
let text = "Hello World";
text.replace(/world/i, "PNLdev"); // Hello PNLdev
نکته: از آرگومان های عبارت با قاعده (به جای آرگومان های رشته) می توان در متد های بالا استفاده کرد.
نکته: عبارات با قاعده می توانند جستجوی ما را بسیار قدرتمندتر کنند. (به عنوان مثال، به حروف کوچک و بزرگ حساس نیستند.)
اصلاح کننده های عبارت با قاعده
از اصلاح کننده ها می توان برای انجام جستجوهای جهانی حساس به حروف کوچک و بزرگ استفاده کرد:
اصلاح کننده ها | توضیحات | آزمایشگاه |
i (Case-insensitive) |
برای تطبیق بدون حساسیت به حروف بزرگ و کوچک |
|
g (Global search) | برای پیدا کردن همه تطابق ها در متن، نه فقط اولین تطابق | |
m (Multiline search) |
برای تطبیق چند خطی، یعنی ^ و $ به ابتدا و انتهای هر خط اشاره می کنند |
|
d (Indices for match) |
برای برگرداندن موقعیت شروع و پایان تطابق ها (جدید در ES2022) |
الگو های عبارت با قاعده
براکت ها برای پیدا کردن محدوده ای از کاراکتر ها استفاده می شوند.
الگو ها | توضیحات | آزمایشگاه |
[abc] | هر یک از کاراکترهای داخل براکتها را پیدا کن | |
[0-9] | هر یک از رقمهای بین 0 تا 9 را پیدا کن | |
(x|y) | هر یک از گزینه های جدا شده با | را پیدا کن |
متا کاراکتر ها (Metacharacters) کاراکترهایی هستند که دارای معنای خاصی می باشند.
متا کاراکتر ها | توضیحات | آزمایشگاه |
\d | یک رقم (عدد) را پیدا کن | |
\s | یک کاراکتر فاصله (Whitespace) مانند فاصله، تب یا خط جدید را پیدا کن | |
\d | یک تطابق در ابتدای کلمه به این شکل: \bWORD یا در انتهای کلمه به این شکل: WORD\b پیدا کن |
|
\uxxxx | کاراکتر یونیکد مشخص شده توسط عدد هگزادسیمال (مبنای ۱۶) xxxx را پیدا کن |
کمیت سنج ها (Quantifiers) مقادیر یا تعداد را تعیین می کنند.
کمیت سنج ها | توضیحات | آزمایشگاه |
n+ | هر رشته ای که شامل حداقل یک کاراکتر n باشد را تطبیق می دهد | |
n* | هر رشته ای که شامل صفر یا بیشتر کاراکتر n باشد را تطبیق می دهد | |
n? | هر رشته ای که شامل صفر یا یک کاراکتر n باشد را تطبیق می دهد |
استفاده از شیء RegExp
در جاوااسکریپت، شیء RegExp یک شیء مرتبط با عبارات منظم (Regular Expressions) است که دارای ویژگی ها (properties) و متد های (methods) از پیش تعریف شده ای برای کار با الگو های متنی است.
استفاده از متد test()
متد test() یکی از متدهای شیء RegExp است که بررسی میکند آیا الگو در رشته وجود دارد یا خیر. خروجی این متد یک مقدار بولین (true یا false) است.
const pattern = /e/;
pattern.test("Hello PNLdev");
/e/.test("Hello PNLdev");
استفاده از متد exec()
متد exec() یکی از متدهای شیء RegExp است که اولین تطابق با الگو را پیدا کرده و آن را به صورت یک شیء (Object) برمیگرداند.
اگر تطابقی پیدا نشود، مقدار خالی (null) را برمیگرداند.
/e/.test("Hello PNLdev");
خلاصه درس