ویرایشگر

در انتظار ورودی یا اجرای عبارت منظم…

عملیات

?
?
?

درباره تست کننده Regex آنلاین

متن را پیست کنید، یک الگوی regex بنویسید، پرچم‌ها را تغییر دهید و فوراً ببینید چه چیزی تطابق دارد. این تست کننده regex از همان موتور RegExp محیط‌های اجرای مدرن جاوااسکریپت استفاده می‌کند، بنابراین آنچه اینجا می‌بینید همان چیزی است که در کد فرانت‌اند، اسکریپت‌های Node.js یا اعتبارسنجی سمت سرور دریافت خواهید کرد. گروه‌های ضبط نامگذاری شده، lookaroundها و حالت Unicode زمانی پشتیبانی می‌شوند که محیط اجرای شما از آنها پشتیبانی کند.

چرا از این تستر عبارات منظم استفاده کنیم

  • تطبیق بلادرنگ با حالت «زنده» اختیاری برای اجرای مجدد همزمان با تایپ
  • فهرست تطبیق ساختاریافته با اندیس شروع، اندیس پایان، مقدار و گروه‌های ضبط نامدار
  • پشتیبانی کامل از نحو RegExp جاوااسکریپت/ECMAScript (همان موتور محیط اجرای JS شما)
  • کنترل پرچم‌ها: g, i, m, s, u, y – با ترکیب و آزمایش ایمن
  • بینش عملکرد پایه با زمان اجرای هر بار در میلی‌ثانیه
  • خروجی خلاصه فقط متنی برای کپی/چسباندن سریع در تیکت‌ها، مستندات یا پیام‌های کامیت
  • عالی برای یادگیری: الگوهای نمونه‌سازی بدون اجرای پروژه کامل یا مجموعه تست
  • ایده‌آل برای کارهای روزمره: تجزیه لاگ، اعتبارسنجی، استخراج URL / ID، پاکسازی سریع داده
  • فهرست نتایج به نرمی محدود شده تا از یخ زدن رابط کاربری در تطبیق متون بزرگ جلوگیری شود

🔧 نحوه استفاده از تستر عبارات منظم for regex-tester

1

1. متن تست خود را پیست یا تایپ کنید

متنی را که می‌خواهید در آن جستجو کنید اضافه کنید: لاگ‌ها، قطعه کدها، تکه‌های CSV، HTML، JSON، هر چیزی که متن ساده باشد.

2

2. الگوی عبارت منظم خود را بنویسید

عبارت منظم را **بدون اسلش‌های احاطه‌کننده** وارد کنید. برای مثال: <code>\b\w+@\w+\.\w+</code> برای یک الگوی شبیه ایمیل پایه، یا <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> با گروه‌های نامدار.

3

3. پرچم‌ها را تنظیم کنید (g, i, m, s, u, y)

پرچم‌هایی مانند <code>g</code> (سراسری)، <code>i</code> (حساس نبودن به بزرگی و کوچکی حروف) یا <code>m</code> (چندخطی) را تغییر دهید. در پشت صحنه، تستر دقیقاً مانند جاوااسکریپت <code>new RegExp(pattern, flags)</code> می‌سازد.

4

4. تطبیق‌ها و گروه‌ها را بررسی کنید

هر تطبیق را با اندیس، اندیس پایان اختیاری و گروه‌های ضبط مرور کنید. گروه‌های نامدار به صورت یک نگاشت شبیه JSON ظاهر می‌شوند تا بتوانید آن‌ها را در fixtureهای تست، تجزیه‌کننده‌ها یا مستندات کپی کنید.

5

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> با مرزهای خط مطابقت می‌یابند
sDotAll<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

Best Practice

عبارت باقاعده خود را در قطعات کوچک بسازید. با چیزی ساده شروع کنید که مطابقت دارد، سپس لنگرها، گروه‌ها و کمیت‌سازها را قدم به قدم اضافه کنید.

Best Practice

تا حد امکان از گروه‌های ضبط نام‌دار (<code>(?<name>...)</code>) استفاده کنید. آن‌ها مطابقت‌های شما را خود-مستند کرده و در طول بررسی کد بسیار آسان‌تر خوانده می‌شوند.

Best Practice

با <code>.*</code> و کمیت‌سازهای تودرتو محتاط باشید. آن‌ها می‌توانند باعث بازگشت سنگین روی ورودی‌های بزرگ شوند. الگوها را خاص‌تر کنید یا تکرار را با <code>{n,m}</code> محدود کنید.

Best Practice

هنگام اشکال‌زدایی، موقتاً پرچم <code>g</code> را حذف کرده و روی اولین مطابقت تمرکز کنید تا مدل ذهنی ساده‌تر شود.

Additional Resources

Other Tools