فصل یازدهم:عبارات با قاعده در اکما اسکریپت

11 شهریور 1397
es6-regex

عبارت با قاعده، یک آبجکت است که الگوی کاراکترها را توصیف می کند. عبارات با قاعده یا 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) هر کدام از جایگزین های مشخص شده را مطابقت می دهد

پروپرتی های RegExp

# پروپرتی توضیحات
1 RegExp.prototype.flags یک رشته که شامل flags از آبجکت RegExp باشد
2 RegExp.prototype.global یک عبارت با قاعده را به طور مکرر آزمایش کرده تا با یک رشته مشخص شده مطابقت پیدا کند، یا اینکه فقط یک بار آزمایش می کند.
3 RegExp.prototype.ignoreCase هنگام تلاش برای مطابقت دادن در یک رشته از ignore case استفاده می کند
4 RegExp.prototype.multiline در چندین خط جستجوی یک رشته را انجام می دهد
5 RegExp.prototype.source متن یک الگو

متدهای RegExp

# متد توضیحات
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 می کند.

 

نویسنده شوید

دیدگاه‌های شما (1 دیدگاه)

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

mr.Farzad
13 شهریور 1398
سلام وقت بخیر برای مشخص کردن کل حروف فارسی چیکار باید کرد؟

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