ویرایشگر
در انتظار ورودی یا اجرای عبارت منظم…
عملیات
چرا از این تستر عبارات منظم استفاده کنیم
- تطبیق بلادرنگ با حالت «زنده» اختیاری برای اجرای مجدد همزمان با تایپ
- فهرست تطبیق ساختاریافته با اندیس شروع، اندیس پایان، مقدار و گروههای ضبط نامدار
- پشتیبانی کامل از نحو RegExp جاوااسکریپت/ECMAScript (همان موتور محیط اجرای JS شما)
- کنترل پرچمها: g, i, m, s, u, y – با ترکیب و آزمایش ایمن
- بینش عملکرد پایه با زمان اجرای هر بار در میلیثانیه
- خروجی خلاصه فقط متنی برای کپی/چسباندن سریع در تیکتها، مستندات یا پیامهای کامیت
- عالی برای یادگیری: الگوهای نمونهسازی بدون اجرای پروژه کامل یا مجموعه تست
- ایدهآل برای کارهای روزمره: تجزیه لاگ، اعتبارسنجی، استخراج URL / ID، پاکسازی سریع داده
- فهرست نتایج به نرمی محدود شده تا از یخ زدن رابط کاربری در تطبیق متون بزرگ جلوگیری شود
🔧 نحوه استفاده از تستر عبارات منظم for regex-tester
1. متن تست خود را پیست یا تایپ کنید
متنی را که میخواهید در آن جستجو کنید اضافه کنید: لاگها، قطعه کدها، تکههای CSV، HTML، JSON، هر چیزی که متن ساده باشد.
2. الگوی عبارت منظم خود را بنویسید
عبارت منظم را **بدون اسلشهای احاطهکننده** وارد کنید. برای مثال: <code>\b\w+@\w+\.\w+</code> برای یک الگوی شبیه ایمیل پایه، یا <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> با گروههای نامدار.
3. پرچمها را تنظیم کنید (g, i, m, s, u, y)
پرچمهایی مانند <code>g</code> (سراسری)، <code>i</code> (حساس نبودن به بزرگی و کوچکی حروف) یا <code>m</code> (چندخطی) را تغییر دهید. در پشت صحنه، تستر دقیقاً مانند جاوااسکریپت <code>new RegExp(pattern, flags)</code> میسازد.
4. تطبیقها و گروهها را بررسی کنید
هر تطبیق را با اندیس، اندیس پایان اختیاری و گروههای ضبط مرور کنید. گروههای نامدار به صورت یک نگاشت شبیه JSON ظاهر میشوند تا بتوانید آنها را در fixtureهای تست، تجزیهکنندهها یا مستندات کپی کنید.
5. خلاصه را کپی کنید
از خلاصه متنی به عنوان گزارش سریع استفاده کنید: تطبیقها را با اندیسها و گروهها فهرست میکند، آماده برای چسباندن در تیکتها، نظرات بازبینی کد یا برگههای تقلب.
جزئیات نحو و موتور عبارات منظم
کلاسهای کاراکتر و مبانی
بلوکهای سازنده اصلی پشتیبانی شده توسط موتور RegExp جاوااسکریپت.
| الگو | معنی | مثال |
|---|---|---|
| . | هر کاراکتر به جز شکستن خط (مگر اینکه پرچم <code>s</code> باشد) | <code>a.c</code> → تطبیق با <code>abc</code> |
| \d, \w, \s | اعداد، کاراکترهای کلمه، فاصله سفید | <code>\d+</code> → <code>123</code> |
| \D, \W, \S | نسخههای منفی موارد بالا | <code>\S+</code> → دنبالههای غیر فاصله سفید |
| [abc] | مجموعه کاراکترها | <code>[aeiou]</code> → یک حرف صدادار |
| [^abc] | مجموعه منفی | <code>[^0-9]</code> → غیر عدد |
| ^, $ | شروع و پایان ورودی (یا خط با <code>m</code>) | <code>^Hello</code>, <code>!$</code> |
کمیتسازها
تکرار توکنهای قبلی، با رفتار حریصانه و تنبل.
| الگو | معنی | مثال |
|---|---|---|
| ? | ۰ یا ۱ بار | <code>colou?r</code> → تطابق با <code>color</code> و <code>colour</code> |
| * | ۰ یا بیشتر | <code>a*b</code> → <code>b</code>, <code>aaab</code> |
| + | ۱ یا بیشتر | <code>\d+</code> → <code>1</code>, <code>123</code> |
| {n} | دقیقاً n بار | <code>a{3}</code> → <code>aaa</code> |
| {n,} | حداقل n بار | <code>\d{3,}</code> → <code>123</code>, <code>1234</code> |
| {n,m} | بین n و m بار | <code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code> |
گروهها، نگاهبهاطراف و ضبطهای نامدار
ویژگیهای پیشرفتهتر ارائه شده توسط موتورهای مدرن جاوااسکریپت.
| ویژگی | سینتکس | مثال |
|---|---|---|
| گروههای ضبط | (...) | <code>(\d{3})-(\d{2})</code> → ناحیه + پسوند |
| گروههای غیرضبط | (?:...) | <code>(?:https?|ftp)://</code> |
| ارجاعهای عقب | \1, \2, ... | <code>(\w)\1</code> → <code>aa</code>, <code>bb</code> |
| پیشنگریها | (?=...), (?!...) | <code>\w+(?=! )</code> → کلمه قبل از <code>! </code> |
| پسنگریها* | (?<=...), (?<!...) | <code>(?<=#)\w+</code> → متن بعد از <code>#</code> (*در موتورهای مدرن) |
| گروههای نامدار | (?<name>...) | <code>(?<year>\d{4})</code> → <code>groups.year</code> در نتایج |
پرچمها (گزینهها)
پرچمهای آزمایشگر مستقیماً به پرچمهای RegExp جاوااسکریپت نگاشت میشوند.
| پرچم | نام | اثر |
|---|---|---|
| g | سراسری | یافتن همه مطابقتها به جای فقط اولین مورد |
| i | نادیدهگیری حروف | مطابقت بدون حساسیت به بزرگی و کوچکی حروف |
| m | چندخطی | <code>^</code> و <code>$</code> با مرزهای خط مطابقت مییابند |
| s | DotAll | <code>.</code> همچنین با شکستهای خط مطابقت مییابد |
| u | یونیکد | فعالسازی حالت یونیکد و فرارهای ویژگی در موتورهای مدرن |
| y | چسبنده | فقط در شاخص فعلی مطابقت دارد (با <code>lastIndex</code> استفاده میشود) |
عملکرد و ایمنی
موتور جاوااسکریپت زیرین، عبارات منظم را به صورت همزمان اجرا میکند. برای حفظ واکنشپذیری رابط کاربری، تستر تعداد مطابقات جمعآوری شده را محدود میکند (مثلاً 500 مورد اول در حالت سراسری). این به جلوگیری از اشباع رابط کاربری کمک میکند، اما جایگزین ممیزیهای کامل عملکرد برای الگوهای پیچیده یا حیاتی نمیشود.
ابزارهای عبارت منظم خط فرمان
پس از کار کردن الگوی شما در اینجا، میتوانید همان عبارت منظم یا مشابه آن را در ترمینال، اسکریپتها یا وظایف CI دوباره استفاده کنید:
لینوکس / مک
جستجو با grep (عبارت منظم توسعهیافته)
grep -E 'pattern' file.txtیافتن خطوطی که با الگوی داده شده مطابقت دارند
جستجو و جایگزینی با sed
sed -E 's/pattern/replacement/g' input.txt > output.txtجایگزینیهای دستهای در فایلهای متنی
ویندوز / PowerShell
جستجوی عبارت منظم در PowerShell
Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txtیافتن الگوهای SSN به سبک آمریکایی در فایلهای لاگ (مثال)
جایگزینی عبارت منظم در PowerShell
(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txtجایگزینیهای ساده مبتنی بر عبارت منظم
کاربردهای عملی عبارتهای منظم
توسعه وب و فرانتاند
- اعتبارسنجی ایمیلها، نامهای کاربری، slugها یا شناسههای سفارشی در فرمها
- استخراج پارامترهای مسیر از URLها یا مسیرها
- ایجاد نمونه اولیه سریع الگوها برای اعتبارسنجی سمت کلاینت
// اعتبارسنجی ساده شبیه ایمیل
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);// پارامترهای مسیر: /post/123
const match = pathname.match(/^\/post\/(\d+)/);لاگها، دادهها و بکاند
- تجزیه برچسبهای زمانی و سطوح از خطوط لاگ
- نرمالسازی فاصله سفید و پاکسازی متنهای نامرتب
- استخراج شناسهها، ایمیلها یا مراجع از محتوای بدون ساختار
// فشردهسازی فاصله سفید تکراری
const normalized = text.replace(/\s+/g, ' ').trim();// تطبیقدهنده ساده خط لاگ
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);پاکسازی داده و اسکریپتهای سریع
- حذف تگها یا ویژگیهای ناخواسته HTML قبل از تجزیه
- استخراج تمام URLها، ایمیلها یا شناسهها از یک متن طولانی
- آمادهسازی فیلدهای مجموعه داده برای وارد کردن به سیستم دیگر
❓ Frequently Asked Questions
❓چرا عبارت باقاعده من هیچ چیزی را مطابقت نمیدهد؟
., ?, +)، ۲) فراموش کردن پرچم g هنگام انتظار برای مطابقتهای متعدد، ۳) فقدان لنگرها (^, $) یا مرزهای کلمه (\b)، ۴) استفاده از ویژگیهایی که موتور جاوااسکریپت شما هنوز پشتیبانی نمیکند (مانند برخی lookbehinds). سعی کنید الگو را ساده کرده و تکهها را به تدریج اضافه کنید.⏱️زمان اجرا (میلیثانیه) به چه معناست؟
performance.now() زمانسنجی میشود. این مقدار یک اندازهگیری تقریبی از مدت زمان اجرای عبارت باقاعده روی ورودی فعلی است. برای شناسایی الگوهای آشکارا پرهزینه مفید است، اما یک معیار کامل یا تضمینی برای عملکرد در محیط تولید نیست.🔍تفاوت بین حالت مطابقت اول و حالت سراسری چیست؟
g، جاوااسکریپت فقط **اولین** مطابقت (در صورت وجود) را برمیگرداند. با g، تستر از input.matchAll() برای جمعآوری **همه** مطابقتها (تا حداکثر ایمن محدود شده) استفاده میکند، از جمله اندیسها و گروههای ضبط. هرگاه به چندین رخداد اهمیت میدهید از حالت سراسری استفاده کنید.🌍آیا این از یونیکد و فرارهای <code>\p{...}</code> پشتیبانی میکند؟
u را فعال کنید تا به حالت یونیکد وارد شوید، که مواردی مانند \p{Letter} یا \p{Script=Greek} را در مرورگرهای مدرن و نسخههای اخیر Node.js باز میکند.⚠️آیا این میتواند بازگشت فاجعهبار را تشخیص دهد؟
Pro Tips
عبارت باقاعده خود را در قطعات کوچک بسازید. با چیزی ساده شروع کنید که مطابقت دارد، سپس لنگرها، گروهها و کمیتسازها را قدم به قدم اضافه کنید.
تا حد امکان از گروههای ضبط نامدار (<code>(?<name>...)</code>) استفاده کنید. آنها مطابقتهای شما را خود-مستند کرده و در طول بررسی کد بسیار آسانتر خوانده میشوند.
با <code>.*</code> و کمیتسازهای تودرتو محتاط باشید. آنها میتوانند باعث بازگشت سنگین روی ورودیهای بزرگ شوند. الگوها را خاصتر کنید یا تکرار را با <code>{n,m}</code> محدود کنید.
هنگام اشکالزدایی، موقتاً پرچم <code>g</code> را حذف کرده و روی اولین مطابقت تمرکز کنید تا مدل ذهنی سادهتر شود.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده Go
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- Php Formatter
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Rust
- فرمتدهنده Scala
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- Javascript Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- بررسیکننده رتبه SERP
- جستجوی Whois