این آموزش در تاریخ ۱۴۰۱/۰۴/۰۳ آپدیت شده است.
آموزش عبارات با قاعده در زبان جاوا اسکریپت
سلام خدمت تمامی دوستان و همراهان محترم سایت آموزشی فری لرن ، امیدوارم که حال همگیتون خوب باشه. لطفا در ادامه با آموزش عبارات با قاعده در زبان جاوا اسکریپت با من همراه باشید.

Free-Learn
آنچه در این جلسه میخوانید :
عبارات با قاعده در زبان جاوا اسکریپت
عبارات با قاعده یا عبارات منظم یا به انگلیسی Regular Expressions ، بطور کلی به اون قوانین ( یا قاعده ) که ما در هنگام جستجو در یک متن یاهم عملیات جایگزینی متن ،تعریف میکنیم گفته میشه.
بفرض مثال من میخوام یک کلمه رو در یک ( جمله یا کلمه ) دیگر جستجو کنم، اینجاست که ما با استفاده از همین عبارات با قاعده در زبان جاوا اسکریپت میتونیم تعریف یا مشخص کنیم که مثلا این جستجو، حساس به حروف کوچک و بزرگ باشه یا نباشه و…
اگه زبان HTML و صفات این زبان رو دنبال کرده باشید میدونید که ما یه صفت داریم به اسم Pattern ( به فارسی یعنی الگو ) کاره این صفت یجورایی شبیه به همین جریان عبارات با قاعده هست.
یعنی با استفاده از اون صفت میتونیم مشخص کنیم که کاربر چجور داده هایی رو درون Input ها وارد کنه، بفرض مثال میگیم کاربر فقط میتونه ۵ حرف و اونم فقط باید حروف بزرگ انگلیسی وارد کنه. ( آموزش صفت Pattern و مثال هاشو حتما مشاهده نمایید )
حال صفت Pattern برای استفاده در زبان HTML و تگ Input می باشد ولی خب عبارات با قاعده برای استفاده در جاوا اسکریپت و جستجو در متن ها و جایگزین کردن متن ها مورد استفاده قرار میگیرد.
Free-Learn
شکل نوشتاری عبارات با قاعده
نحوه نوشتن یا استفاده یا سینتَکس (Syntax) یک عبارت با قاعده در جاوااسکریپت بصورت زیر می باشد.
|
1 |
/Pattern/Modifier |
- Pattern : اون عبارت یا الگو یا هر چیزی که قراره در یک متن دیگه جستجو شه
- Modifier : اون اصلاح کننده یا درکل اون قانون ما برای نحوه جستجو زدن
مثال :
|
1 |
/free-learn/i; |
Free-Learn
معرفی متدهای پراستفاده با عبارات با قاعده
یسری از مُتدهای رشته در زبان جاوااسکریپت هستند که معمولا و بیشتر با عبارات با قاعده مورد استفاده قرار میگیرند، یعنی عملا میتونیم بگیم که عبارات با قاعده بیشتر با این متدها کار میکنه.
| نام متد | توضیح | مثال |
|---|---|---|
| ()search | برای جستجو کردن در یک متن ( شماره ایندکس یا جایگاه متن جستجو شده رو برمیگردونه ) |
مثال |
| ()replace | برای جستجو و جایگزین کردن یک متن | مثال |
| ()match | برای جستجو کردن در یک متن ( خوده متن جستجو شده رو برمیگردونه ) |
مثال |
Free-Learn
نحوه تعریف یک عبارت باقاعده
برای تعریف و استفاده از یک عبارت باقاعده یا Regular Expression میتونیم از روش های زیر استفاده نماییم :
- در قالب یک عبارت ساده بدون اصلاح کننده
- در قالب یک عبارت ساده بهمراه اصلاح کننده
- بصورت مستقیم در متدها ( مثلا در متد match ) ( در این آموزش از این روش استفاده شده )
- در قالب یک عبارت ساده بدون اصلاح کننده
|
1 |
MyRegExp = /sadegh asadi/; |
- در قالب یک عبارت ساده بهمراه اصلاح کننده
|
1 |
MyRegExp = /sadegh asadi/ig; |
- بصورت مستقیم در متدها ( مثلا در متد match )
|
1 |
MyMatch = MyString.match(/sadegh asadi/ig); |
Free-Learn
اصلاح کننده ها یا Modifiers در عبارات با قاعده
اصلاح کننده یا به انگلیسی Modifier بطور کلی به اون قانون یا قاعده ما برای نحوه جستجو زدن می باشد، مثلا ما یه اصلاح کننده داریم به نام i ( آی انگلیسی کوچک ) این میگه آقا جستجو به حروف کوچک و بزرگ انگلیسی حساس نباشه، خب این یعنی چی؟!
فرض میکنیم میخوایم کلمه free رو در جمله my site is Free-Learn جستجو بزنیم، خب اگه توجه کنید در کلمه free حرف f با حروف کوچک هست و دوباره در جمله اصلی همون حرف با حروف بزرگ هست.
میگه آقا اگه مثلا در متن ما یک حرف بزرگ انگلیسی بود، میگه شما اون حرفه چه کوچیک باشه چه بزرگ قربون دستت برام جستجوش کن و برش گردون ، تموم شد رفت به این میگن حساس نبودن به حروف.
| نام اصلاح کننده | توضیح | مثال |
|---|---|---|
| i | برای اینکه جستجو به حروف کوچک و بزرگ حساس نباشد | مثال |
| g | برای اینکه جستجو در کل متن انجام شود ( یعنی از حرف اول تا حرف آخر جمله ) |
مثال |
| m | برای اینکه جستجو در چندین خط ( سطر ) انجام شود | مثال |
| [abc] | اون متنی که در براکت وجود دارد رو در کل متن جستجو میزنه | مثال |
| [a-z] | جستجو از یک حرف خاص تا یک حرف خاص دیگر | مثال |
| [abc^] | همه ی متن رو جستجو میزنه بجز اونی که در براکت وجود دارد | مثال |
| [۱۲۳] | اون اعدادی که در براکت وجود دارد رو در کل متن جستجو میزنه | مثال |
| [۱-۹] | جستجو از یک عدد خاص تا یک عدد خاص دیگر | مثال |
| [۰-۹^] | همه اعداد رو جستجو میزنه بجز اونی که در براکت وجود دارد | مثال |
| (x|y) | برای جستجو زدن چندین کلمه بصورت همزمان ( باید کلمات رو با | از همدیگه جدا کرد ) |
مثال |
| d\ | برای جستجو زدن فقط اعداد | مثال |
| s\ | برای جستجو زدن فقط فضاهای خالی ( خط فاصله ها ) | مثال |
| b\ | برای جستجو اگه در ابتدای یک کلمه یا در انتهای یک کلمه باشد برای در انتها [کلمه مورد نظر]\b برای در ابتدا \b[کلمه مورد نظر] |
مثال ۱ مثال ۲ |
| B\ | برای جستجو اگه در ابتدای یک کلمه یا در انتهای یک کلمه نباشد برای در انتها [کلمه مورد نظر]\B برای در ابتدا \B[کلمه مورد نظر] |
مثال ۱ مثال ۲ |
| xxx\ | برای جستجوی یک کاراکتر با کد اُکتال ( Octal ) | مثال |
| xdd\ | برای جستجوی یک کاراکتر با کد هگزادسیمال ( HexaDecimal ) | مثال |
| udddd\ | برای جستجوی یک کاراکتر یونیکد ( Unicode ) با کد هگزادسیمال | مثال |
| +n | برای جستجوی یک حرف / کلمه که شامل حداقل یک عدد n باشد ( بجای n هر حرف یا کلمه ای میتونه قرار بگیره ) |
مثال |
| *n | برای جستجوی یک حرف / کلمه که شامل هیچ یا بیشتر از یک عدد n باشد ( بجای n هر حرف یا کلمه ای میتونه قرار بگیره ) |
مثال |
| ?n | برای جستجوی یک حرف / کلمه که شامل هیچ یا حداقل یک عدد n باشد ( بجای n هر حرف یا کلمه ای میتونه قرار بگیره ) |
مثال |
Free-Learn
متد های شئ برای عبارات با قاعده
خب دوستان در ادامه ی آموزش عبارات با قاعده در زبان جاوا اسکریپت میخوایم با چنتا از متدهای تست عبارات با قاعده آشنا شیم و ببینیم چی هستند و به چه درد میخورند.
عبارات با قاعده یا همون Regular Expression یه چندتا مُتد مخصوص بخودشون دارند، که میتونیم با استفاده از اونها مثلا کارای تستی بروی رشته ها انجام بدیم.
| نام متد | توضیح | مثال |
|---|---|---|
| ()exec | برای تست مطابقت داشتن یک رشته ( اولین رشته ای که مطابقت داشته باشه رو برگشت میده ) |
مثال |
| ()test | برای تست مطابقت داشتن یک رشته ( یک مقدار true یا false برگشت میده ) |
مثال |
| ()toString | مقدار رشته ای یک عبارت باقاعده رو برگشت میده | مثال |
Free-Learn
مثال های بیشتر
- مثال شماره ۱ : فقط حروف فارسی بتونه وارد شه
- یعنی همون آ [الف], ب, پ و.. هستند فقط اینها بصورت کد هگزادسیمال هستند
|
1 |
MyRegExp = new RegExp(/[\u0622\u0627\u0628\u067E\u062A-\u062C\u0686\u062D-\u0632\u0698\u0633-\u063A\u0641\u0642\u06A9\u06AF\u0644-\u0648\u06CC]/g); |
- مثال شماره ۲ : فقط اعداد فارسی بتونه وارد شه
|
1 |
MyRegExp = new RegExp(/[۰-۹]/g); |
- مثال شماره ۳ : فقط اعداد فارسی و حروف فارسی و حروف بزرگ یا کوچک انگلیسی از a تا f میتونه وارد شه ( یعنی استفاده از چندین محدود کننده ) ( باید بین هر یک از محدود کننده ها یک | قرار داد )
|
1 |
MyRegExp = new RegExp(/[a-f]|[۰-۹]|[آ-ی]/gi); |





