آشنایی با مقدمات RegEx


همان‌طور که ملاحظه می‌شود، در اسکریپت زیر دو متغیر ساخته‌ایم تحت عناوین string و regex که به ترتیب جهت ذخیره‌سازی یک استرینگ و رگیولار اکسپرشنی برای تست آن استرینگ مورد استفاده قرار خواهند گرفت و در خط سوم فانکشنی از پیش تعریف شده در زبان جاوااسکریپت تحت عنوان ()match را به متغیر string منتسب نموده و به عنوان پارامتر ورودی هم متغیری که حاوی رِجِکس است را پاس داده‌ایم:

var string = "sokanacademy";
var regex = /sokanacademy/;
string.match(regex);

همان‌طور که ملاحظه می‌شود، برای رِجِکس نیازی به درج علائم "" و یا '' نیست. حال اگر این Snippet یا «تکه کد» را اجرا کنیم،‌ در خروجی خواهیم داشت:

0: "sokanacademy"
groups: undefined
index: 0
input: "sokanacademy"
length: 1
.
.
.

در مثال فوق، استرینگی که به عنوان رِجِکس مابین علائم // قرار گرفته است تحت عنوان Literal String شناخته می‌شود. همچنین می‌بینیم که خانهٔ صفرم خروجی که یک آرایه‌ است با استرینگ مد نظرمان مَچ شده است و برای نمایش دادن خروجی به طور خلاصه‌تر، می‌توانیم اسکریپت فوق را به صورت زیر آپدیت کنیم:

var string = "sokanacademy";
var regex = /sokanacademy/;
var result = string.match(regex);
result[0]

در واقع،‌ خروجی تابع ()match را در متغیری تحت عنوان result ریخته سپس خانهٔ صفرم این آرایه را فراخوانی کرده‌ایم به طوری که از این پس خروجی فقط استرینگ sokanacademy خواهد بود. حال اگر کدهای فوق را به صورت زیر تغییر دهیم:

var string = "sokan";
var regex = /sokanacademy/;
string.match(regex);

خواهیم دید با توجه به این که استرینگ sokan با رِجِکس مذکور مَچ نیست، خروجی null خواهد بود. در ادامهٔ‌ این آموزش، قصد داریم تا با کاربرد علامت . در رِجِکس آشنا شویم به طوری که برای مثال داریم:

var string = "sokanacademy";
var regex = /sokanacadem./;
string.match(regex);

همان‌طور که ملاحظه می‌شود، در رِجِکس حرف آخر را حذف نموده و به جای آن از علامت . استفاده کرده‌ایم که به معنای «هر چیزی» است. اگر کد فوق را اجرا کنیم، رجکس فوق به درستی با استرینگ مذکور مَچ می‌شود؛ حتی اگر این استرینگ را به sokanacademX تغییر دهیم نیز مجدد این رِجِکس مَچ می‌شود چرا که علامت . دربرگیرندهٔ‌ کلیهٔ‌ کاراکترها من جمله حرف X نیز می‌شود.

درآمدی بر مفهوم Escaping

در عین حال، فرض کنیم که قصد داریم خود علامت نقطه نیز به عنوان بخشی از استرینگ مذکور به صورت .sokanacademy باشد که در چنین شرایطی می‌باید با مفهوم Escaping آشنا شویم. ابتد کدها را به صورت زیر تغییر داده سپس به تفسیر آن‌ها خواهیم پرداخت:

var string = "sokanacademy.";
var regex = /sokanacademy\./;
string.match(regex);

می‌بینیم که استرینگ مذکور با رِجِکسی که نوشته‌ایم مَچ شده است. جهت تست، استرینگ فوق را به صورت @sokanacademy تغییر می‌دهیم و در صورت اجرای آن خواهیم دید که خروجی null خواهد بود. در واقع،‌ آنچه در رِجِکس فوق انجام داده‌ایم آن است که قبل از . از علامت \ استفاده کرده‌ایم که تحت عنوان Backslash شناخته می‌شود و این وظیفه را دارا است تا مفهوم علامت . که در فضای رِجِکس گفتیم به معنای «هر چیزی» است را تغییر داده و این دستور را به مفسر زبان برنامه‌نویسی مورد استفاده خواهد داد که از این پس منظور خودِ کاراکتر نقطه است.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان