عبارت با قاعده، یک آبجکت است که الگوی کاراکترها را توصیف می کند. عبارات با قاعده یا Regular Expression، به طور خلاصه regex یا regexp هم نامیده می شود.
در جاوا اسکریپت از کلاس RegExp برای کار با عبارات با قاعده استفاده می شود. String و RegExpها متدهایی را تعریف می کنند که از عبارات با قاعده برای اجرای عمل انطباق الگو و کاربردهای جستجو و جایگزین روی یک متن استفاده می کنند.
یک عبارت یا قاعده مانند زیر تعریف می شود:
var pattern = new RegExp(pattern, attributes); OR var pattern = /pattern/attributes;
در کد بالا، attribute می تواند ترکیبی از مقادیر جدول زیر باشد.
# | خصیصه یا attribute | توضیحات |
1 | G | مطابقت سراسری |
2 | I | Ignore case |
3 | M | جستجو را در چند خط انجام می دهند |
4 | U | یونیکد کاراکتر مشخص شده را بر می گرداند |
5 | Y | فقط از ایندکسی که با lastIndex مشخص شده به بعد را مطابقت می دهند |
علامت براکت [] معنی خاصی هنگام استفاده از عبارات با قاعده دارد. این علامت برای یافتن مجموعه ای از کاراکترها استفاده می شود.
# | عبارت | توضیحات |
1 | [...] | هر کاراکتری که بین علامت براکت باشد را مطابقت می دهد |
2 | [^...] | هر کاراکتری که بین علامت براکت نباشد |
3 | [0-9] | هر عدد بین 0 تا 9 |
4 | [a-z] | هر کاراکتری که با حروف کوچک a تا z باشد |
5 | [A-Z] | هر کاراکتری که با حروف بزرگ A تا Z باشد |
6 | [a-Z]
|
هر کاراکتری که حروف کوچک a و حرف بزرگ Z باشد |
محدوده مشخص شده در بالا بصورت کلی مشخص شده اند. شما می توانید از [0-3] برای مطابقت دادن اعداد بین صفر تا 3 استفاده کنید یا [b-v] برای مطابقت دادن کاراکترهای محدوده b تا v استفاده می شود.
فراوانی یک یا چند کاراکتر را می توان با یک کاراکتر ویژه مشخص کرد.هر کاراکتر ویژه معنی خاص خود را دارد.
# | عبارت | توضیحات |
1 | p+ | با هر رشته ای که حداقل یک p داشته باشد، مطابقت می کند |
2 | p* |
با هر رشته ای که شامل صفر یا تعداد بیشتری p باشد. |
3 | p? | با هر رشته ای که شامل صفر یا تعداد بیشتری p باشد. |
4 | p{N} | با هر رشته ای که شامل زنجیره ای از Nها که با یک p همراه شده اند |
5 | p{2,3} | با هر رشته ای که شامل زنجیره ای از اعداد 2 یا 3 که با p همراه شده است . |
6 | p{2, } | با هر رشته ای که شامل زنجیره ای از اعداد حداقل 2 که با p همراه شده باشد را بر می گرداند. |
7 | p$ | با هر رشته ای که در انتهای آن p باشد. |
8 | ^p | با هر رشته ای که در ابتدای آن p باشد. |
9 | [^a-zA-Z] | با هر رشته ای که شامل حروف کوچک a تا z و همچنین A تا Z نباشد |
10 | p.p |
رشته p را در رشته p دیگر مطابقت می دهد |
11 | ^.{2}$ | با هر رشته ای که دقیقا شامل دو کاراکتر باشد . |
12 | <b>(.*)</b> | با هر رشته ای که داخل تگ <b> و </b> قرار داشته باشد |
13 | p(hp)* |
با هر رشته ای که شامل یک p بوده و همراه آن صفر یا تعداد بیشتری نمونه از hp قرار دارد |
# | کاراکتر | توضیحات |
1 | الفبایی | با خود کاراکتر مطابقت می دهد |
2 | \0 | کاراکتر null (\u0000) |
3 | \t | تب (\u0009) |
4 | \n | خط جدید (\u000A) |
5 | \v | تب عمودی (\u000B) |
6 | \r | برگشت (\u000D) |
7 | \xnn | کاراکترهای لاتین که با اعداد هگزادسیمال nn مشخص شده اند. برای مثال \x0A معادل \n است |
8 | \uxxxx | کاراکتر یونیکدی که با اعداد هگزادسیمال xxxx مشخص شده اند. برای مثال \u0009 معادل \t است |
9 | \cX | کاراکتر کنترلی ^X، برای مثال \cJ معادل است با \n |
متا کاراکترها یک کاراکتر الفبایی است که قبل از ان یک بک اسلش (\) قرار میگیرد. و در ترکیب با هم معنی خاصی می دهد.
به عنوان مثال، برای جستجو جمع مبلغ زیادی پول میتوانید از کاراکتر \d استفاده کنید. /([\d]+)000/
در اینجا \d هر رشته ای که کاراکتر عددی دارد را جستجو می کند. در زیر تعدادی از متا کاراکترها را آورده ایم که می توانید در عبارات با قاعده از آنها استفاده کنید.
# | کاراکتر | توضیحات |
1 | . | یک تک کاراکتر |
2 | \s | یک کاراکتر فضای خالی (space، Tab، خط جدید) |
3 | \S | کاراکترهایی بجز فضای خالی |
4 | \d | یک عدد (0-9) |
5 | \D | یک کاراکتر غیر عددی |
6 | \w | یک کاراکتر حرفی (a-z, A-Z, 0-9, _) |
7 | \W |
یک کاراکتر غیر حرفی (کاراکترهای خاص) |
8 | [\b] |
یک حرف backspace |
9 | [aeiou] | یک تک کاراکتر را در داخل مجموعه داده شده مطابقت می دهد |
10 | [^aeiou] | یک تک کاراکتر را در خارج مجموعه داده شده مطابقت می دهد |
11 | (foo|bar|baz) | هر کدام از جایگزین های مشخص شده را مطابقت می دهد |
# | پروپرتی | توضیحات |
1 | RegExp.prototype.flags | یک رشته که شامل flags از آبجکت RegExp باشد |
2 | RegExp.prototype.global | یک عبارت با قاعده را به طور مکرر آزمایش کرده تا با یک رشته مشخص شده مطابقت پیدا کند، یا اینکه فقط یک بار آزمایش می کند. |
3 | RegExp.prototype.ignoreCase | هنگام تلاش برای مطابقت دادن در یک رشته از ignore case استفاده می کند |
4 | RegExp.prototype.multiline | در چندین خط جستجوی یک رشته را انجام می دهد |
5 | RegExp.prototype.source | متن یک الگو |
# | متد | توضیحات |
1 | RegExp.prototype.exec() | یک جستجو را برای مطابقت دادن در پارامتر رشته ای آن اجرا می کند. |
2 | RegExp.prototype.test() | یک انطباق را در پارامتر رشته ای اش تست می کند. |
3 | RegExp.prototype.match() | یک انطباق را در رشته داده شده اجرا کرده و نتایج مطابقت داده شده را بر می گرداند |
4 | RegExp.prototype.replace() | مطابقت هایی که در یک رشته داده شده انجام شده را با یک زیر رشته جدید جایگزین می کند. |
5 | RegExp.prototype.search() | یک جستجو در مطابقت هایی که در یک رشته انجام شد، را انجام می دهد و ایندکس الگوی پیدا شده در رشته مورد نظر را بر می گرداند. |
6 | RegExp.prototype.split() | رشته داده شده را به چند زیر رشته تقسیم کرده و انها را داخل یک آرایه می ریزد. |
7 | RegExp.prototype.toString() | آبجکت مورد نظر را به رشته تبدیل می کند. و متد object.prototype.toString را Override می کند. |
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.