تستر و اعتبارسنج رایگان Regex آنلاین - آزمایش الگوها در لحظه
آزمایش و اعتبارسنجی عبارات منظم آنلاین با برجستهسازی در زمان واقعی. تستر الگوی رایگان regex با اعتبارسنجی نحوی، نتایج تطبیق و قابلیت ذخیرهسازی. همین الان regex را تست کنید!
تستر الگوی منظم (Regex)
نتایج تطبیق
برای مشاهده نتایج، الگو و متن آزمایشی را وارد کنید
ذخیره الگو
نتایج تطبیق
برای مشاهده نتایج، الگو و متن آزمایشی را وارد کنید
الگوهای ذخیره شده
هنوز الگویی ذخیره نشده است
راهنمای نمادهای منظم
.با هر کاراکتر به جز خط جدید تطبیق میدهد\dبا هر رقم (۰-۹) تطبیق میدهد\Dبا هر کاراکتر غیر رقمی تطبیق میدهد\wبا هر کاراکتر کلمه (a-z، A-Z، ۰-۹، _) تطبیق میدهد\Wبا هر کاراکتر غیر کلمه تطبیق میدهد\sبا هر کاراکتر فاصله سفید تطبیق میدهد\Sبا هر کاراکتر غیر فاصله سفید تطبیق میدهد^با ابتدای خط تطبیق میدهد$با انتهای خط تطبیق میدهد*با صفر یا چند مورد از کاراکتر قبلی تطبیق میدهد+با یک یا چند مورد از کاراکتر قبلی تطبیق میدهد?با صفر یا یک مورد از کاراکتر قبلی تطبیق میدهد{n}با دقیقاً n مورد از کاراکتر قبلی تطبیق میدهد{n,}با حداقل n مورد از کاراکتر قبلی تطبیق میدهد{n,m}با بین n تا m مورد از کاراکتر قبلی تطبیق میدهد[abc]با هر یک از کاراکترهای داخل براکت تطبیق میدهد[^abc]با هر کاراکتری که در براکت نیست تطبیق میدهد(abc)توکنهای متعدد را گروهبندی کرده و تطبیق را ثبت میکندa|bبا a یا b تطبیق میدهد\bبا موقعیت مرز کلمه تطبیق میدهدمستندات
آزمونگر عبارت منظم چیست
آزمونگر عبارت منظم ابزاری است که یک عبارت منظم را با بخشی از متن بررسی میکند و مواردی را که با آن مطابقت دارند نشان میدهد. عبارت منظم، یا regex، دنبالهای کوتاه از نویسههاست که الگویی را در متن توصیف میکند؛ مانند «سه رقم پشت سر هم» یا «هر واژهای که با حرف بزرگ شروع شود». این اعتبارسنج عبارت منظم به کاربر اجازه میدهد الگویی و مقداری متن آزمایشی وارد کند و بلافاصله، بدون نوشتن کد، موارد مطابق را بهصورت برجسته ببیند.
عبارتهای منظم در بسیاری از زبانهای برنامهنویسی برای جستوجوی متن، بررسی درستبودن قالب ورودی کاربر و بیرونکشیدن بخشهای خاص از یک متن بزرگتر استفاده میشوند. نحو آنها فشرده است، اما بهراحتی میتوان در آن اشتباه کرد؛ بنابراین آزمایش الگو پیش از استفاده در برنامه به شناسایی زودهنگام خطاها کمک میکند.
چگونه یک عبارت منظم را بهصورت آنلاین آزمایش کنیم
- یک الگو وارد کنید. عبارت منظم را در کادر الگو وارد کنید. ابزار هنگام تایپ کاربر نحو را بررسی میکند و اگر الگو نامعتبر باشد، برای مثال وقتی یک کروشه یا پرانتز باز مانده باشد، پیام خطا نشان میدهد.
- پرچمها را انتخاب کنید. پرچمها نحوه اعمال الگو را تغییر میدهند (در ادامه ببینید).
- متن آزمایشی را وارد کنید. متنی را که باید جستوجو شود در کادر متن آزمایشی تایپ یا جایگذاری کنید.
- نتایج را بخوانید. موارد مطابق در متن برجسته میشوند و ابزار تعداد آنها را گزارش میکند. اگر متن آزمایشی وجود داشته باشد، ابزار همچنین بیان میکند که الگو با کل متن از ابتدا تا انتها مطابقت دارد یا فقط با بخشی از آن.
- یک الگو ذخیره کنید. میتوان یک الگو را با برچسبی کوتاه ذخیره کرد تا بعداً دوباره استفاده شود. الگوهای ذخیرهشده در مرورگر نگهداری میشوند، نه روی سرور؛ بنابراین فقط در همان دستگاه و مرورگر نمایش داده میشوند.
- نتایج را کپی کنید. متن مطابق یا خود الگو را میتوان با یک کلیک در کلیپبورد کپی کرد.
پرچمهای عبارت منظم
پرچم حرفی منفرد است که پس از الگو افزوده میشود و نحوه رفتار آن را تغییر میدهد. این ابزار از چهار پرچم، بهصورت جداگانه یا ترکیبی، پشتیبانی میکند:
| پرچم | نام | اثر |
|---|---|---|
g | سراسری | همه موارد مطابق در متن را پیدا میکند، بهجای اینکه پس از اولین مورد متوقف شود. |
i | بدون حساسیت به بزرگی و کوچکی حروف | تفاوت میان حروف بزرگ و کوچک را نادیده میگیرد. |
m | چندخطی | باعث میشود ^ و $ با شروع و پایان هر خط مطابقت داشته باشند، نه فقط با شروع و پایان کل متن. این پرچم محل یافتن موارد مطابق را تغییر میدهد، اما بررسی کل متن را که در ادامه توضیح داده میشود تغییر نمیدهد. |
s | نقطه شامل همه نویسهها | باعث میشود . با نویسههای خط جدید نیز مطابقت داشته باشد. |
پرچمها را میتوان ترکیب کرد؛ برای مثال gi برای حالت سراسری و بدون حساسیت به بزرگی و کوچکی حروف، یا gms برای ترکیب حالت سراسری، چندخطی و نقطه شامل همه نویسهها.
ابزار چگونه موارد مطابق را پیدا میکند
تطبیقدهنده همیشه همه رخدادهای الگو را در متن جستوجو میکند؛ به همین دلیل شمارش موارد مطابق حتی وقتی پرچم سراسری در فهرست کشویی انتخاب نشده است، مانند فعالبودن آن عمل میکند. هر مورد مطابق با موقعیت و طول خود ثبت میشود، سپس متن اصلی به بخشهای مطابق و نامطابق تقسیم میشود تا موارد مطابق برجسته شوند.
برای بررسی اینکه یک الگو با تمام متن مطابقت دارد، ابزار الگو را در یک گروه غیرقابلگرفتن قرار میدهد و آن را با لنگر محدود میکند: ^(?:pattern)$. گروهبندی اهمیت دارد، زیرا | (تناوب) پیوند سستتری از لنگرها دارد. بدون گروه، الگویی مانند cat|dog که بهصورت ^cat|dog$ لنگرگذاری شده باشد، در واقع یعنی «با cat شروع میشود یا با dog پایان مییابد»؛ این با «کل متن cat یا dog است» یکسان نیست.
این بررسی پرچم چندخطی را نیز حذف میکند. با فعالبودن m، ^ و $ در هر شکست خط مطابقت دارند؛ بنابراین آزمون لنگردار به این پرسش پاسخ میدهد که «آیا یک خط مطابقت دارد؟» نه اینکه «آیا کل متن مطابقت دارد؟». ابزار برای این بررسی m را حذف میکند و i و s را نگه میدارد، زیرا این دو پرچم چیزی را که الگو با آن مطابقت میکند تغییر میدهند، نه محل قرارگیری لنگرها را. بنابراین پاسخ همیشه به کل متن، از جمله شکستهای خط آن، مربوط است.
مثال حلشده
الگو: \d+ (یک یا چند رقم)، پرچم: g، متن آزمایشی: Room 12 has 5 chairs.
- موارد مطابق پیدا شد:
12و5، بنابراین تعداد موارد مطابق ۲ است. - بررسی کل متن: الگو با تمام متن مطابقت ندارد، زیرا متن شامل حروف و فاصلهها نیز هست.
اگر متن آزمایشی به 12345 تغییر کند، همان الگو با کل رشته مطابقت دارد؛ بنابراین بررسی کل متن مقدار درست را گزارش میکند.
مرجع نحو عبارت منظم
تطبیق نویسهها
| نماد | معنا | مثال | موارد مطابق |
|---|---|---|---|
. | هر نویسهای بهجز خط جدید | a.c | «abc»، «adc»، «a1c» |
\d | هر رقمی از ۰ تا ۹ | \d{3} | "۱۲۳", "۴۵۶" |
\D | هر نویسهای که رقم نباشد | \D+ | «abc»، «xyz» |
\w | هر حرف، رقم یا زیرخط | \w+ | «abc123»، «test_۱۲۳» |
\W | هر نویسهای که حرف، رقم یا زیرخط نباشد | \W+ | "!@#" |
\s | هر نویسه فاصلهای | a\sb | «a b» |
\S | هر نویسهای که فاصلهای نباشد | \S+ | «abc» |
لنگرهای موقعیت
| نماد | معنا | مثال | موارد مطابق |
|---|---|---|---|
^ | شروع یک خط | ^abc | «abc» در ابتدای یک خط |
$ | پایان یک خط | abc$ | «abc» در پایان یک خط |
\b | مرز واژه | \bword\b | «word» بهعنوان یک واژه کامل |
کمیتگذارها
| نماد | معنا | مثال | موارد مطابق |
|---|---|---|---|
* | صفر بار یا بیشتر از مورد قبلی | a*b | «b»، «ab»، «aab» |
+ | یک بار یا بیشتر از مورد قبلی | a+b | «ab»، «aab» |
? | صفر بار یا یک بار از مورد قبلی | colou?r | «color»، «colour» |
{n} | دقیقاً n بار از مورد قبلی | a{3} | «aaa» |
{n,} | دستکم n بار از مورد قبلی | a{2,} | «aa»، «aaa» |
{n,m} | بین n و m بار از مورد قبلی | a{2,4} | «aa»، «aaa»، «aaaa» |
مجموعههای نویسه و گروهها
| نماد | معنا | مثال | موارد مطابق |
|---|---|---|---|
[abc] | هر یک از نویسههای فهرستشده در کروشه | [aeiou] | هر واکه منفرد |
[^abc] | هر نویسهای که در کروشه فهرست نشده باشد | [^aeiou] | هر نویسهای بهجز واکهها |
(abc) | نویسهها را گروهبندی میکند و مورد مطابق را ثبت میکند | (abc)+ | «abc»، «abcabc» |
| `a\ | b` | با a یا b منطبق است | `cat\ |
دانستن دو قابلیت دیگر نیز مفید است. نگاهبهجلو که بهصورت a(?=b) نوشته میشود، فقط زمانی با «a» مطابقت میکند که پس از آن «b» بیاید، بدون اینکه «b» را در مورد مطابق بگنجاند. نگاهبهعقب که بهصورت (?<=a)b نوشته میشود، فقط زمانی با «b» مطابقت میکند که درست پس از «a» آمده باشد.
نمونههای رایج الگو
این الگوها را میتوان در ابزار جایگذاری کرد تا رفتارشان در برابر متن نمونه مشاهده شود.
فقط رقمها: ^\d+$ با رشتهای که کاملاً از رقمها تشکیل شده است، مانند «۴۸۲۱۰»، مطابقت میکند و هر چیزی را که حرف یا فاصله داشته باشد رد میکند.
نشانی ایمیل (بررسی پایه): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ با نشانیهایی در قالب name@domain.tld، مانند «user@example.com»، مطابقت میکند. این فقط یک بررسی ساده است و قالب کامل ایمیل را که استانداردهای اینترنتی تعریف کردهاند پوشش نمیدهد؛ بنابراین برخی نشانیهای نامتعارف اما معتبر در آن رد میشوند.
شماره تلفن ایالات متحده: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ با قالبهایی مانند «(123) 456-7890»، «123-456-7890» و «1234567890» مطابقت میکند.
تاریخ در قالب YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ بررسی میکند که ماه بین 01 و ۱۲ و روز بین 01 و ۳۱ باشد. این الگو بررسی نمیکند که روز برای ماه مشخص معتبر باشد؛ بنابراین «2024-02-30» را میپذیرد، با اینکه فوریه هرگز ۳۰ روز ندارد.
سؤالات رایج
عبارت منظم چیست؟ عبارت منظم دنبالهای از نویسههاست که یک الگوی جستوجو را تعریف میکند. از آن برای جستوجو، تطبیق و ویرایش متن در بیشتر زبانهای برنامهنویسی و ویرایشگرهای متن استفاده میشود.
پرچم سراسری چه کاری انجام میدهد؟
بدون پرچم سراسری، جستوجو معمولاً پس از اولین مورد مطابق متوقف میشود. با پرچم سراسری (g)، جستوجو ادامه مییابد و همه موارد مطابق در متن گزارش میشوند. این ابزار هنگام شمارش، صرفنظر از پرچم انتخابشده، همیشه همه موارد مطابق را جستوجو میکند.
چگونه با یک نقطه تحتاللفظی یا نویسه ویژه دیگری مطابقت دهم؟
پیش از آن یک بکاسلش بگذارید. برای مثال، \. با یک نقطه تحتاللفظی مطابقت میکند، نه با «هر نویسه» که معنای . بدون گریز است.
تفاوت .* و .*? چیست؟
.* حریص است و تا حد امکان با نویسههای بیشتری مطابقت میکند. .*? تنبل است و در عین موفقماندن بقیه الگو، با کمترین تعداد ممکن از نویسهها مطابقت میکند.
چرا ابزار میگوید متن بهطور کامل مطابقت ندارد، با اینکه هر خط مطابقت دارد؟
بررسی کل متن، متن را بهصورت یک رشته واحد، شامل شکستهای خط، در نظر میگیرد. الگویی مانند \d+ با هر یک از خطهای 12 و 34 جداگانه مطابقت دارد، اما دو خط بههمراه خط جدید میان آنها همگی رقم نیستند؛ بنابراین پاسخ بررسی کل متن منفی است. برای مطابقت با متنی که چند خط را دربر میگیرد، الگو باید شکستهای خط را نیز پوشش دهد؛ برای مثال با [\s\S]+.
چگونه بررسی کنم که یک رشته بهطور کامل، نه فقط بخشی از آن، با یک الگو مطابقت دارد؟
در ابتدای الگو ^ و در انتهای آن $ را اضافه کنید؛ برای مثال ^[0-9]+$ برای رشتهای که فقط از رقمها تشکیل شده است.
آیا این آزمونگر با قواعد عبارت منظم زبانهای برنامهنویسی دیگر مطابقت دارد؟ این ابزار از موتور عبارت منظم داخلی جاوااسکریپت استفاده میکند. بیشتر نحو اصلی، مانند کلاسهای نویسه و کمیتگذارها، میان زبانهایی از جمله پایتون، جاوا و پرل مشترک است؛ اما برخی جزئیات تفاوت دارند، بنابراین تضمینی نیست الگویی که اینجا کار میکند، همهجا دقیقاً همان رفتار را داشته باشد.
منابع
- "Regular expression." ویکیپدیا، بنیاد ویکیمدیا. https://en.wikipedia.org/wiki/Regular_expression
- مستندات وب MDN. "Regular expressions." موزیلا. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- فریدل، J. E. F. (۲۰۰۶). تسلط بر عبارتهای منظم. انتشارات O'Reilly.