شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا اسکریپت - عبارات منظم و شیء RegExp

یک عبارت باقاعده (regular expression) یک شیء است که الگویی از کاراکترها را توصیف می‌کند.

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

نحو

می‌توان یک عبارت باقاعده را با استفاده از سازنده RegExp() تعریف کرد، به شکل زیر:


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

اینجا شرح پارامترها آمده است −

  • pattern − یک رشته که الگوی عبارت باقاعده یا یک عبارت باقاعده دیگر را مشخص می‌کند.

  • attributes − یک رشته اختیاری که حاوی هر یک از ویژگی‌های "g"، "i" و "m" است که به ترتیب، مطابقت‌های جهانی، حساس به بزرگی-کوچکی و چندخطی را مشخص می‌کند.

پرانتز مربعی

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

عبارت منظم و شیء عبارت منظم RegExp


 

یک عبارت منظم شیءی است که یک الگوی کاراکتری را توصیف می‌کند.

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

نحو

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

توضیحات پارامتر‌ها به شرح زیر است:

  • pattern - یک رشته که الگوی عبارت منظم یا عبارت منظم دیگری را مشخص می‌کند.

  • attributes - یک رشته اختیاری است که شامل هر یک از ویژگی‌های "g"، "i" و "m" می‌باشد که جستجوهای سراسری، بدون توجه به حروف بزرگ و کوچک و جستجوهای چند خطی را مشخص می‌کنند، به ترتیب.

براکت‌ها

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

ردیف عبارت و توضیحات
۱

[...]

هر یک از کاراکترها در بین براکت‌ها.

۲

[^...]

هر یک از کاراکترها که در بین براکت‌ها نباشد.

۳

[0-9]

انطباق با هر رقم اعشاری از ۰ تا ۹

۴

[a-z]

انطباق با هر حرف از الفبای فارسی، از حرف الف تا ی

۵

[A-Z]

انطباق با هر حرف از الفبای فارسی، از حرف آ تا ی

۶

[a-Z]

انطباق با هر حرف از الفبای فارسی و هر حرف از الفبای انگلیسی در حالت بزرگ یا کوچک

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

میزان‌گذار‌ها (Quantifiers)

میزان و یا موقعیت توالی‌های کاراکتری داخل براکت و یا کاراکترهای تنها می‌تواند با استفاده از یک کاراکتر خاص نشان داده شود. هر کاراکتر خاص، معنای خاص خود را دارد. +، *،؟ و $ همه با یک دنباله کاراکتری همراهند.

ردیف عبارت و توضیحات
۱

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 باشد.

۳

^.{2}$

هر رشته‌ای را مطابقت می‌دهد که دقیقا دو کاراکتر داشته باشد.

۴

<b>(.*)</b>

هر رشته‌ای را مطابقت می‌دهد که درون <b> و </b> قرار دارد.

۵

p(hp)*

هر رشته‌ای را مطابقت می‌دهد که شامل یک p و صفر یا چند بار تکرار الگوی hp باشد.

کاراکترهای رشته

ردیف نویسه و توضیح
۱

حرف-رقمی (Alphanumeric)

خودش

۲

\0

نویسه NUL (\u0000)

۳

\t

تب (\u0009)

۴

\n

خط جدید (\u000A)

۵

\v

تب عمودی (\u000B)

۶

\f

فرم فید (\u000C)

۷

\r

ریترن کریج (\u000D)

۸

\xnn

نویسه لاتینی مشخص شده توسط عدد شانزدهی nn؛ به عنوان مثال، \x0A همان \n می باشد.

۹

\uxxxx

نویسه یونیکد مشخص شده توسط عدد شانزدهی xxxx؛ به عنوان مثال، \u0009 همان \t می باشد.

۱۰

\cX

نویسه کنترلی ^X؛ به عنوان مثال، \cJ معادل نویسه خط جدید \n می باشد.

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

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

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

جدول زیر مجموعه ای از متاکاراکترهایی را که در بیانیه های با فرمت PERL می توان از آنها استفاده کرد، لیست می کند.

ردیف نویسه و توضیحات
۱

.

یک نویسه تنها

۲

\s

یک نویسه خالی (فضا، تب، خط جدید)

۳

\S

نویسه غیر خالی

۴

\d

یک رقم (۰-۹)

۵

\D

نویسه غیر عددی

۶

\w

نویسه کلمه‌ای (a-z، A-Z، 0-9، _)

۷

\W

نویسه غیر کلمه‌ای

۸

[\b]

یک بک‌اسپیس حرفی (حالت خاص).

۹

[aeiou]

مطابقت با یک نویسه تنها در مجموعه داده شده

۱۰

[^aeiou]

مطابقت با یک نویسه تنها خارج از مجموعه داده شده

۱۱

(foo|bar|baz)

مطابقت با هر یک از جایگزین‌های مشخص شده

تغییر دهنده‌ها

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

شماره تغییردهنده و توضیحات
۱

i

یافتن مطابقت با حروف بزرگ و کوچک مورد نظر بدون توجه به بزرگی یا کوچکی حروف.

۲

m

مشخص می‌کند که اگر رشته دارای نویسه‌های کاراکتری تازه خط یا بازگشت خورده باشد، عملگرهای ^ و $ به جای مرز رشته، با مرز خط تازه، مطابقت خواهند کرد.

۳

g

یافتن همه مطابقت‌ها در رشته، به جای مطابقت با اولین مورد.

خصوصیات عبارت منظم (RegExp)

در ادامه لیستی از خصوصیات مرتبط با RegExp و توضیحات آن‌ها آمده است.

ردیف ویژگی و توضیحات
۱ constructor

تعیین کننده تابعی است که پروتوتایپ شیء را ایجاد می کند.

۲ global

مشخص می کند که آیا مدیفایر "g" تنظیم شده است یا نه.

۳ ignoreCase

مشخص می کند که آیا مدیفایر "i" تنظیم شده است یا نه.

۴ lastIndex

اندیسی است که محل شروع جستجوی بعدی را مشخص می کند.

۵ multiline

مشخص می کند که آیا مدیفایر "m" تنظیم شده است یا نه.

۶ source

متن الگو.

 

روش های RegExp

در ادامه، لیستی از روش های مرتبط با RegExp همراه با توضیحات آن ها آمده است.

ردیف متد و توضیحات
۱ exec()

جستجوی الگوی مطابق در پارامتر رشته ای آن صورت می‌گیرد.

۲ test()

بررسی مطابقت با الگو در پارامتر رشته ای آن صورت می‌گیرد.

۳ toSource()

یک شیء متنی که شیء مشخص شده را نشان می‌دهد، برمیگرداند؛ می‌توانید از این مقدار برای ایجاد یک شی جدید استفاده کنید.

۴ toString()

یک رشته را نشان می‌دهد که شیء مشخص شده را نمایندگی می‌کند.