عبارات با قاعده

از موتو کد، دانشنامهٔ برنامه‌نویسی

یک عبارت با قاعده دنباله از کاراکتر هاست که یک الگوی جستجو را فراهم می‌کند. [۱]

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

عبارت با قاعده چیست؟[ویرایش | ویرایش]

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

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

یک عبارت منطقی می‌تواند به صورت تک کاراکتری باشد یا ساختار پیچیده تری داشته باشد.

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

شیوهٔ نوشتار[ویرایش | ویرایش]

/''pattern''/''modifiers'';

مثال[ویرایش | ویرایش]

var patt = /motocode/i;

توضیح مثال:[ویرایش | ویرایش]

motocode/i/ یک عبارت با قاعده است.

motocode یک الگو است (که برای جستجو استفاده می‌شود).

i یک modifier است (که مشخص می‌کند جستجو می‌بایست حساس به حروف کوچک و بزرگ نباشد)

استفاده به همراه متدهای رشته متنی (String)[ویرایش | ویرایش]

در جاوا اسکریپت، عبارت‌های با قاعده معمولاً همراه با دو متد رشته‌های متنی استفاده می‌شوند: متد search() و replace() .

متد search() از عبارت با قاعده برای پیدا کردن نتیجه یک جستجو استفاده می‌کند، و موقعیت یا اندیس نتیجه را برمی‌گرداند.

متد replace() یک رشته متنی ویرایش شده را برمی‌گرداند که الگو در آن جایگزین شده‌است.

استفاده از تابع search() رشته های متنی با یک رشته متنی[ویرایش | ویرایش]

متد search() یک رشته متنی را برای پیدا کردن یک رشته متنی جستجو می‌کند و موقعیت یا اندیس نتیجه را برمی‌گرداند:

مثال[ویرایش | ویرایش]

استفاده از یک رشته متنی برای پیدا کردن کلمه "Wikicod" در یک رشته متنی:

var str = "Visit WikiCod!";
var n = str.search("WikiCod");


مشاهدهٔ نتیجه


استفاده از تابع search() رشته های متنی با عبارت های با قاعده[ویرایش | ویرایش]

مثال[ویرایش | ویرایش]

استفاده از یک عبارت با قاعده برای جستجوی غیر حساس به حروف کوچک و بزرگ کلمه "Wikicod" در یک رشته متنی:

var str = "Visit Wikicod";
var n = str.search(/motocode/i);

نتیجه متغیر n برابر خواهد بود با:

6


مشاهدهٔ نتیجه


استفاده از متد replace() با یک رشته متنی[ویرایش | ویرایش]

متد replace() یک مقدار بخصوص را با یک مقدار دیگر در یک رشته متنی جابه‌جا می‌کند:

var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "Wikicod");


مشاهدهٔ نتیجه


استفاده از تابع replace() با یک عبارت باقاعده[ویرایش | ویرایش]

مثال[ویرایش | ویرایش]

استفاده از یک عبارت با قاعده غیر حساس به حروف کوچک و بزرگ برای جابه‌جایی کلمه Microsoft با کلمه Wikicod در یک رشته متنی:

var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "Wikicod");

مقدار متغیر Res برابر خواهد بود با:

Visit Wikicod!


مشاهدهٔ نتیجه


آیا شما توجه کرده‌اید؟[ویرایش | ویرایش]

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

عبارت‌های با قاعده می‌توانند جستجوی شما را قدرتمند تر کنند (برای مثال غیرحساس بودن به حروف کوچک و بزرگ).

Modifier های عبارت های باقاعده[ویرایش | ویرایش]

Modifier توضیحات مثال
i جستجوی غیر حساس به حروف کوچک و بزرگ مشاهدهٔ نتیجه
g جستجوی کامل (تمامی نتایج را پیدا می‌کند حتی اگر اولین نتیجه یکسان را هم قبلاً پیدا کرده باشد) مشاهدهٔ نتیجه
m امکان پیدا کردن نتایج جستجو در چندین خط را فراهم می‌کند. مشاهدهٔ نتیجه

الگوهای عبارت های باقاعده[ویرایش | ویرایش]

از براکت‌ها برای پیدا کردن محدوده ای از کاراکترها استفاده می‌شود:

عبارت توضیحات مثال
[abc] تمام کاراکتر های بین براکت‌ها را پیدا می‌کند. مشاهدهٔ نتیجه
[0-9] تمام اعداد بین براکت‌ها را پیدا می‌کند. مشاهدهٔ نتیجه
(x|y) تمام گزینه های بین | را پیدا می کند. مشاهدهٔ نتیجه

متا کاراکترها، کاراکترهایی هستند که معنی خاصی می‌دهند:

متا کاراکتر توضیحات مثال
\d یک عدد را پیدا می‌کند. مشاهدهٔ نتیجه
\s یک کاراکتر فاصله را پیدا می‌کند. مشاهدهٔ نتیجه
\b نتیجه را در ابتدای کلمه ای مانند \bword یا در پایان کلمه ای مانند word\b پیدا می‌کند. مشاهدهٔ نتیجه


مشاهدهٔ نتیجه

\uxxxx کاراکتر unicode را که با یک عدد هگزا دسیمال مشخص شده‌است را پیدا می‌کند. مشاهدهٔ نتیجه

کمیت (Quantifiers) مقادیر را تعریف می‌کند:

عبارت توضیحات مثال
n+ تمامی نتایجی را که حداقل یک n دارند را پیدا می‌کند. مشاهدهٔ نتیجه
n* تمامی نتایجی را که دارای صفر یا تعداد بیشتری از حرف n می‌باشند را پیدا می‌کند. مشاهدهٔ نتیجه
n? تمامی نتایجی را که دارای صفر یا تعداد بیشتری از حرف n می‌باشند را پیدا می‌کند. مشاهدهٔ نتیجه

استفاده از شیء یا Object ,RegExp[ویرایش | ویرایش]

در جاوا اسکریپت، شی RegEXP یک عبارت با قاعده با ویژگی‌ها و متدهای از پیش تعریف شده‌است.

استفاده از متد test()[ویرایش | ویرایش]

متد test() یک متد عبارت از شی RegExp می‌باشد.

این متد یک رشته متنی را برای پیدا کردن الگو یا آرگومان خود جستجو می‌کند و با توجه به نتیجه مقدار true یا false را برمی‌گرداند.

مثال پایین یک رشته متنی را برای کاراکتر "e" جستجو می‌کند:

مثال[ویرایش | ویرایش]

var patt = /e/;
patt.test("The best things in life are free!");

از آنجایی که کاراکتر "e" در رشته متنی مورد نظر وجود دارید، خروجی کدبالا به صورت زیر خواهد بود:

true


مشاهدهٔ نتیجه


شما مجبور نیستید که عبارت با قاعده را ابتدا درون یک متغیر قرار دهید. دو خط کد بالا را می‌توان به یک خط کد به صورت زیر خلاصه کرد:

/e/.test("The best things in life are free!");

استفاده از متد exec()[ویرایش | ویرایش]

متد exec() یک متد شی RegExp است.

این متد یک رشته متنی را برای یک مقدار به خصوص جستجو می‌کند و نتیجه را به صورت یک شیء (object) برمی‌گرداند.

اگر هیچ نتیجه ای یافت نشود، این متد یک شی خالی (null) را برمی‌گرداند.

مثال زیر یک رشته متنی را برای پیدا کردن کاراکتر "e" جستجو می‌کند:

مثال ۱[ویرایش | ویرایش]

/e/.exec("The best things in life are free!");


مشاهدهٔ نتیجه


مرجع کامل RegExp[ویرایش | ویرایش]

برای دیدن پک کامل، شما می‌توانید مقاله ما را تحت عنوان مرجع کامل RegExp در جاوا اسکریپت، را مشاهده کنید.

مرجع شامل توضیحات و مثال‌هایی از تمامی ویژگی‌ها و متدهای RegExp است.


منابع آموزشی[ویرایش]