عبارت منظم (RegExp) شیء ای است که الگوی کاراکترها را توضیح می دهد.

کلاس RegExp جاوا اسکریپت، عبارت منظم را نمایش میدهد و String و RegExp متدهایی را تعریف می کند که برای اجرای جستجو و جایگزینی و تطبیق الگوی توابع در متن از عبارت منظم استفاده می کنند.

سینتکس:

یک عبارت منظم توسط سازنده RegExp ()  بصورت زیر تعریف می شود:

var pattern = new RegExp(pattern, attributes);
or simply
var pattern = /pattern/attributes;

تعریف پارامترها:

  • الگو: رشته ای که الگوی عبارت منظم یا عبارات منظم دیگر را تعیین می کند.
  • ویژگی: یک رشته اختیاری حاوی ویژگی های “g” “i” و  “m” که به ترتیب تطابیق چند خطی، حساس به حروف و سراسری را تعیین می کند.

کروشه ها

کروشه ها ([]) وقتی در متن عبارت منظم قرار میگیرند معنی خاصی دارند. از آنها برای پیدا کردن محدوده کاراکترها استفاده می شود.

شماره عبارت و توضیحات
۱ […]هر کاراکتر بین کروشه ها.
۲ [^…]هر کاراکتری که بین کروشه ها نیست.
۳ [۰-۹]ارقام اعشاری بین ۰ تا ۹.
۴ [a-z]کاراکترهایی با حروف کوچک از a تا z.
۵ [A-Z]کاراکترهایی با حروف بزرگ از A تا Z.
۶ [a-Z]کاراکترهایی از حروف کوچک  a تا حروف بزرگ Z.

 

محدوده هایی که در بالا نشان داده شد کلی هستند. باید بتوانید از محدوده [۰-۳]  برای تطبیق ارقام اعشاری بین ۰ تا ۳ یا [b-v]  برای تطبیق هر کاراکتر با حروف کوچک در محدوده b تا v نیز استفاده کنید.

کوانتومی ها (کمیت سنج)

فرکانس یا موقعیت توالی کاراکترهای داخل کروشه و کاراکترهای انفرادی می تواند توسط کاراکترهای خاص تفکیک شود. هر کاراکتر خاص دارای یک ویژگی خاص است. نشانه های The  +, *, ?, و  $ همه از یک ترتیب کاراکتر پیروی می کنند.

شماره عبارت و توضیحات
۱ p+هر رشته ای حاوی یک یا چند p را منطبق می کند.
۲ p*هر رشته حاوی صفر یا تعداد بیشتر p منطبق می کند.
۳ p?هر رشته حاوی حداکثر یک p را منطبق می کند.
۴ p{N}هر رشته حاوی یک توالی N p را منطبق می کند.
۵ p{2,3}هر رشته حاوی یک توالی دو یا سه p را منطبق می کند.
۶ p{2, }هر رشته حاوی یک توالی باحداقل دو p را منطبق می کند.
۷ p$هر رشته با p  در پایان آن را منطبق می کند.
۸ ^pهر رشته با p در آغاز آن را منطبق می کند.

مثال

مثال های زیر بیشتردرمورد تطبیق کاراکترها توضیح می دهد:

شماره عبارت و توضیحات
۱ [^a-zA-Z]هر رشته که حاوی کاراکترهای محدوده بین a تا z و A تا Z نباشد را منطبق می کند.
۲ p.pهررشته حاوی p که به جای دنبال شدن توسط یکp  دیگر، توسط هر کاراکتر دنبال می شود.
۳ ^.{۲}$هر رشته حاوی دقیقا دو کاراکتر.
۴ <b>(.*)</b>هر رشته که در <b>  و  </b> محصور شده باشد.
۵ p(hp)*هر رشته حاوی یک p که توسط صفر یا موارد بیشتر از توالی hp دنبال شود.

 

کاراکترهای حرفی (Literal)

شماره عبارت و توضیحات
۱ Alphanumeric (حرفی عددی)عبارتی که شامل حروف و عدد باشد.
۲ \۰کاراکتر تهی (\u0000)
۳ \tتب (\u0009)
۴ \nخط جدید (\u000A)
۵ \vتب عمودی (\u000B)
۶ \fتغذیه فرم (\u000C)
۷ \rبازگشت سر سطر (\u000D)
۸ \xnnکاراکترهای لاتین که توسط اعداد برمبنای ۱۶ nn معین می شود. برای مثال  \x0Aمعادل \n است.
۹ \uxxxxکاراکتر های یونیکدی که توسط اعداد برمبنای ۱۶ معین می شوند. به عنوان مثال \u0009 معادل \t است.
۱۰ \cXکاراکترهای کنترلی ^X، به عنوان مثال \cJ معادل است با \n.

 

متا کاراکترها

متاکاراکتر یک کاراکتر الفبایی است که قبل از یک بک اسلش (\) قرار گرفته و به ترکیب معنی خاصی می دهد.

به عنوان مثال، می توانید جمع مبلغ زیادی پول را با استفاده از متاکاراکتر ‘\d’ جستجو کنید: /([\d]+)000/

در اینجا \d هر رشته ای از کاراکترهای عددی را جستجو می کند.

در جدول زیر مجموعه ای از متاکاراکترهایی که در عبارات منظم PERL Style استفاده می شود آمده است:

شماره کاراکترها و توضیحات
۱ .یک کاراکتر انفرادی
۲ \sیک کاراکتر فضای خالی (فاصله، تب ، خط جدید)
۳ \Sکاراکتر های به جز فضای خالی.
۴ \dیک عدد (۰-۹)
۵ \Dکاراکتر غیر عددی
۶ \wیک کاراکتر حرفی (a-z, A-Z, 0-9, _)
۷ \Wکاراکتر غیر حرفی
۸ [\b]یک backspace حرفی
۹ [aeiou]انطباق یک کاراکتر انفردادی در مجموعه داده شده.
۱۰ [^aeiou]انطباق یک کاراکتر انفرادی بیرون از مجموعه داده شده.
۱۱ (foo|bar|baz)انطباق هر گزینه معین شده.

 

تعدیل کننده ها

چندین تعدیل کننده وجود دارد که می تواند کار شما با regexpها را راحت کند، مثل حساسیت به حروف کوچک و بزرگ، جستجو در خطوط چندگانه و غیره.

شماره تعدیل کننده و توضیحات
۱ iحساسیت به حروف کوچک یا بزرگ را اجرا می کند.
۲ mمعین می کند که رشته دارای کاراکترهای خط جدید یا بازگشت سرسطر است. عملگرهای ^  و  $حالا به جای مرز رشته با مرز خط جدید مطابقت دارند.
۳ gیک انطباق سراسری اجرا می کند. به جای توقف بعد از اولین انطباق، تمام مطابقت ها را پیدا می کند.

 

ویژگی های RegExp

در ادامه لیست ویژگی های مربوط به RegExp به همراه توضیحات آن آمده است:

شماره ویژگی و توضیحات
۱ Constructorتابعی که نمونه اولیه شیء را ایجاد می کند، معین می کند.
۲ Globalمشخص می کند که آیا تعدیل کننده “g” تنظیم شده یا نه.
۳ ignoreCaseمشخص می کند که آیا تعدیل کننده “i” تنظیم شده یا نه.
۴ lastIndexشاخصی برای شروع انطباق بعدی.
۵ Multilineمشخص می کند که آیا تعدیل کننده “m” تنظیم شده یا نه.
۶ Sourceمتن الگو

 

در بخش های بعد برای توضیح کاربرد ویژگی های RegExp مثال هایی عنوان خواهد شد.

متدهای RegExp

در ادامه لیستی از متدهای RegExp به همراه توضیح قرار دارد:

شماره نام متد و توضیحات
۱ exec()برای انطباق پارامترهای رشته جستجو انجام می دهد.
۲ test()در پارامترهای رشته یک انطباق تست می کند.
۳ toSource()یک حرف شیء به نمایندگی از شیء معین شده را باز می گرداند. می توانید از این مقدار برای ایجاد یک شیء جدید استفاده کنید.
۴ toString()به نمایندگی از شیء معین شده یک رشته باز میگرداند.

در بخش های بعد برای اثبات کاربرد مدهای RegExp مثال هایی عنوان خواهد شد.