RegExp در JS چیست؟

کلمه RegExp، مخفف عبارت Regular Expressions به معنای عبارات با قاعده است.

عبارت با قاعده، دنباله ای از کاراکترها است که یک الگوی جستجو را تشکیل می دهد.

وقتی داده ها را در نوشتاری جستجو می کنیم، می توانیم از این الگوی جستجو برای توصیف آنچه جستجو می کنیم، استفاده کنیم.

یک عبارت با قاعده، می تواند یک کاراکتر یا یک الگوی پیچیده تر باشد.

الگوی جستجو را می توان برای جستجوی متن و عملیات جایگزینی متن استفاده کرد.

نوع نگارش:

/pattern/modifiers;

/pnldev/i;

در مثال بالا:

  • /pnldev/i یک عبارت با قاعده است. (regular expression
  • pnldev یک الگو (برای استفاده در جستجو) است. (pattern)
  • i یک اصلاح کننده است که جستجو را تغییر می دهد تا به حروف کوچک و بزرگ حساس باشد. (modifier)

استفاده از متدهای رشته

در JavaScript، عبارات با قاعده اغلب با 2 متد رشته ای استفاده می شوند:

  1. متد ()search: از یک عبارت برای جستجوی مطابقت استفاده می کند و موقعیت مطابقت را برمی گرداند.
  2. متد ()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");

خلاصه درس

تمرین


مشاهده پاسخ
توسعه دهندگان
دیبا جلالی