متن 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

تست‌کننده Regex

عبارت‌های باقاعده را زنده تست کنید: تطبیق‌ها، گروه‌های capture و جایگزینی، همراه با ۱۵ الگوی آماده.

/ /
متن آزمایشی
تطبیق‌ها و گروه‌ها
تطبیق‌ها اینجا نمایش داده می‌شوند...

آزمایشگر Regex — تست آنلاین عبارت‌های باقاعده با نمایش زنده تطبیق‌ها

نوشتن عبارت باقاعده تا وقتی نبینید چه چیزی را می‌گیرد، حدس و گمان است. این آزمایشگر رایگان Regex، الگوی شما را همان‌طور که تایپ می‌کنید روی متن نمونه خودتان اجرا می‌کند و هر تطبیق را برجسته نشان می‌دهد؛ در نتیجه خطا را در چند ثانیه پیدا می‌کنید، نه بعد از انتشار یک قانون اعتبارسنجی معیوب.

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

نمودار: الگوی (\d{4})-(\d{2})-(\d{2}) با 2026-09-17 تطابق دارد و گروه‌های $1، $2 و $3 را می‌گیرد؛ جایگزینی $3/$2/$1 نتیجه‌ی 17/09/2026 را می‌دهد.الگو(\d{4})-(\d{2})-(\d{2})متنتطابقv1.8·2026-09-17$1$2$3$1 = 2026$2 = 09$3 = 17جایگزینی با$3/$2/$1v1.8 17/09/2026
هر جفت پرانتز بخشی از تطابق را به‌عنوان یک گروه شماره‌دار نگه می‌دارد. در جایگزینی می‌توان گروه‌ها را به هر ترتیبی به کار برد؛ مثلاً $3/$2/$1 تاریخ ISO را به روز/ماه/سال تبدیل می‌کند.

آزمایشگر Regex واقعاً به چه درد می‌خورد

بیشتر خطاهای Regex عجیب و غریب نیستند. الگو یا بیش از حد می‌گیرد، یا کمتر از حد، یا فقط روی همان یک نمونه‌ای که در ذهن داشتید کار می‌کند و روی نمونه دوم شکست می‌خورد. آزمایشگر آن رفتار نامرئی را قابل دیدن می‌کند: پنج ورودی واقعی، از جمله موارد دردسرساز، را بچسبانید و ببینید کدام‌ها روشن می‌شوند. این سریع‌ترین راه یادگیری این نحو هم هست، چون یک کاراکتر را عوض می‌کنید و بلافاصله نتیجه‌اش را می‌بینید.

روش استفاده از این آزمایشگر

  1. الگو را بدون اسلش‌های دو طرف بنویسید، مثلاً [a-z]+\d{2,4}.
  2. پرچم‌های لازم را در کادر مربوطه وارد کنید، مثلاً gi برای جستجوی سراسری و بدون حساسیت به بزرگی حروف.
  3. متن نمونه واقعی را در متن آزمایشی بچسبانید، از جمله موارد مرزی که انتظار دارید رد شوند.
  4. تطبیق‌هایی را که در متن برجسته شده‌اند و زیر تطبیق‌ها و گروه‌ها فهرست می‌شوند بخوانید، الگو را اصلاح کنید و تکرار کنید تا فقط متن درست انتخاب شود.
  5. گروه‌های Capture را که همراه هر تطبیق نشان داده می‌شوند ببینید و در جایگزینی با یک جایگزین با $1 یا $<name> بنویسید؛ متن بازنویسی‌شده زیر نتیجه جایگزینی ظاهر می‌شود.

نمی‌دانید از کجا شروع کنید؟ منوی کتابخانهٔ الگوها یکی از ۱۵ الگوی رایج را همراه با پرچم‌هایش بارگذاری می‌کند؛ از آدرس ایمیل، URL، آدرس IPv4، UUID و رنگ هگز تا لینک Markdown، کلمه تکراری و فاصله‌های اضافه در ابتدا یا انتهای خط. اگر کادر آزمایش خالی باشد یا هنوز نمونه قبلی را داشته باشد، یک متن نمونه هم همراه الگو می‌آید؛ اما اگر متن خودتان را چسبانده باشید، سر جایش می‌ماند و الگو روی داده واقعی شما اجرا می‌شود. این‌ها را نقطه شروع بدانید، نه ابزار اعتبارسنجی: مثلاً الگوی ایمیل عمداً کاربردی است و هر آدرسی را که استاندارد مجاز می‌داند نمی‌پذیرد. راهنمای Regex برای ایمیل و راهنمای اعداد، تلفن و آدرس IP توضیح می‌دهند این الگوها کجا کم می‌آورند.

گروه‌های Capture و جست‌وجو و جایگزینی

بخشی از الگو را داخل پرانتز بگذارید تا گرفته شود؛ این ابزار هر گروه را کنار تطبیقش نشان می‌دهد — با شماره گروه 1، گروه 2 و همین‌طور جلوتر، به‌علاوه هر گروه نام‌دار به شکل (?<name>...). این‌طور می‌توانید سال، پیش‌شماره یا پسوند فایل را از دل یک تطبیق بیرون بکشید، نه اینکه فقط مطمئن شوید تطبیق رخ داده. در کادر جایگزینی با چیزی بنویسید تا تطبیق‌ها همان‌جا بازنویسی شوند: $1 گروه اول را می‌گذارد، $<name> یک گروه نام‌دار را، $& کل تطبیق را، و $$ یک علامت دلار واقعی را.

پرچم‌ها و تأثیر آنها

پرچماثرچه زمانی لازم است
gهمه تطبیق‌ها را پیدا می‌کند، نه فقط اولیجایگزینی یا شمارش همه موارد
iبزرگی و کوچکی حروف را نادیده می‌گیردورودی کاربر، ایمیل، برچسب‌ها
m^ و $ در هر سطر عمل می‌کنندکار سطر به سطر روی لاگ یا فهرست
s. با خط جدید هم تطبیق می‌کندگرفتن بلوکی که چند سطر را می‌پوشاند
uحالت کامل یونیکدایموجی، حروف فارسی و خط‌های غیرلاتین
yچسبان؛ فقط در موقعیت جاری تطبیق می‌دهدنوشتن Tokenizer یا Parser

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

نشانهمعنی
\d \w \sیک رقم، یک کاراکتر کلمه، یک فاصله سفید
.هر کاراکتری به‌جز خط جدید، مگر آنکه پرچم s فعال باشد
^ $ابتدا و انتهای رشته، یا با پرچم m ابتدا و انتهای هر سطر
* + ?صفر یا بیشتر، یک یا بیشتر، صفر یا یک
{2,5}بین دو تا پنج بار تکرار
[abc] [^abc]یکی از این کاراکترها، یا هر چیزی به‌جز اینها
(...) (?:...)گروه ثبت‌شونده و گروه بدون ثبت
\bمرز کلمه؛ راه‌حل درست برای تطبیق فقط کلمات کامل

مردم Regex را برای چه می‌نویسند

  • اعتبارسنجی ایمیل، شماره تلفن، کد پستی و کد ملی در فرم‌ها.
  • استخراج آدرس IP، کد وضعیت، مهر زمانی یا شناسه کاربر از سطرهای لاگ.
  • جستجو و جایگزینی در کل پروژه و بازنویسی‌هایی که ویرایشگر نمی‌تواند به‌صورت عینی انجام دهد.
  • قوانین مسیریابی و ریدایرکت در فریم‌ورک، وب‌سرور یا CDN.
  • پاک‌سازی داده‌های واردشده یا استخراج‌شده پیش از رسیدن به پایگاه داده.
  • اعمال قوانین ترکیب رمز عبور در سمت کاربر.

اشتباه‌هایی که بیشترین وقت را می‌گیرند

  • کمیت‌سنج‌های حریص. .* تا انتهای سطر پیش می‌رود. با .*? یا یک کلاس نفی‌شده مانند [^"]* زودتر متوقفش کنید.
  • کاراکترهای ویژه بدون Escape. نقطه، به‌علاوه، علامت سؤال یا اسلش واقعی باید Backslash داشته باشند.
  • فراموش کردن پرچم g و بعد تعجب از اینکه چرا فقط مورد اول عوض شد.
  • Backtracking فاجعه‌بار. کمیت‌سنج‌های تودرتو مثل (a+)+ می‌توانند روی ورودی طولانی بدون تطبیق، برنامه را قفل کنند.
  • الگوی بیش از حد سخت‌گیر برای ایمیل. آدرس‌های واقعی نقطه، علامت به‌علاوه و کاراکترهای بین‌المللی دارند؛ ساده بگیرید و با ارسال ایمیل تأیید کنید.
  • تلاش برای تجزیه HTML. برای ساختارهای تودرتو از Parser استفاده کنید؛ Regex نمی‌تواند تگ‌های باز و بسته را بشمارد.

نکته‌ای درباره گویش‌های Regex

این آزمایشگر از موتور JavaScript مرورگر شما استفاده می‌کند و اگر قرار است الگو در یک صفحه وب، در Node.js یا در یک JSON Schema اجرا شود همین هدف درست است. PCRE، پایتون، Go و PostgreSQL در جزئیاتی مثل پشتیبانی از Lookbehind، نحو گروه‌های نام‌دار و ویژگی‌های یونیکد تفاوت دارند. پیش از اتکا به یک الگو، آن را در همان محیطی که واقعاً اجرا می‌شود آزمایش کنید.

هیچ‌چیزی که می‌چسبانید فرستاده نمی‌شود

الگو و متن نمونه شما در مرورگر می‌مانند. این موضوع مهم است چون داده آزمایشی معمولاً داده واقعی است — تکه‌ای از لاگ، رکورد مشتری، نمونه ایمیل — و هیچ‌کدام نباید روی سرور شخص دیگری بنشیند.

همان الگو در پایتون، جاوا، C#، PHP و Go

الگویی که اینجا کار می‌کند معمولاً با تغییر فقط پوسته به زبان دیگر منتقل می‌شود. چیزی که واقعاً دردسر می‌سازد، نحوه escape شدن بک‌اسلش در رشته‌ها و امکاناتی است که هر موتور دارد.

زبانبررسی تطبیقمراقب باشید
Pythonre.search(r'\d{4}', text)از رشته خام استفاده کنید؛ گروه نام‌دار به شکل (?P<name>...) نوشته می‌شود
JavaPattern.compile("\\d{4}").matcher(text).find()بک‌اسلش‌ها را دوتایی کنید؛ matches() تطبیق کل رشته را می‌خواهد
C# / .NETRegex.IsMatch(text, @"\d{4}")رشته‌های verbatim با @ از escape دوباره جلوگیری می‌کنند
PHPpreg_match('/\d{4}/', $text)PCRE: جداکننده اجباری است، برای UTF-8 پرچم u اضافه کنید
Goregexp.MustCompile(`\d{4}`).MatchString(text)موتور RE2: بدون lookbehind و بدون ارجاع به عقب

ابزارهای مرتبط

الگوها تقریباً همیشه روی متنی کار می‌کنند که از جای دیگری آمده است. داده را با فرمت‌کننده JSON مرتب کنید، مقدار Escape‌شده را با رمزگشای URL باز کنید، توکن را با رمزگشای JWT بخوانید و مقدارهای زمانی پیداشده را با مبدل تایم‌استمپ به تاریخ تبدیل کنید.

آموزش‌های مرتبط