همانطور که ملاحظه میشود، در اسکریپت زیر دو متغیر ساختهایم تحت عناوین 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 شناخته میشود و این وظیفه را دارا است تا مفهوم علامت .
که در فضای رِجِکس گفتیم به معنای «هر چیزی» است را تغییر داده و این دستور را به مفسر زبان برنامهنویسی مورد استفاده خواهد داد که از این پس منظور خودِ کاراکتر نقطه است.