نحوه تست و اشکال زدایی عبارات منظم آنلاین به صورت رایگان (راهنمای 2026)
عبارات منظم - به اختصار regex - یکی از آن مهارتهایی هستند که تا روزی که به آنها نیاز پیدا کنید، مانند یک کد مخفی به نظر میرسند، و ناگهان باعث میشوند یک ساعت در ویرایش دستی صرفهجویی کنید. یک عبارت منظم (regex) الگوی کوچکی است که متن را توصیف میکند: «تمام آدرسهای ایمیل موجود در این سند را پیدا کن»، «بررسی کن که آیا این رمز عبور حاوی عدد است یا خیر» یا «تمام تاریخهایی که به یک شکل نوشته شدهاند را با یکدیگر جایگزین کن.» مشکل این است که یک عبارت منظم تقریباً صحیح دقیقاً مانند یک عبارت منظم صحیح به نظر میرسد - تا زمانی که خطوط نامعتبر را حذف کند یا ورودی نامعتبر را بپذیرد. به همین دلیل است که هرگز نباید کورکورانه regex بنویسید. این راهنما نشان میدهد که چگونه با استفاده از یک تستر رایگان که نیازی به ثبت نام یا نصب ندارد، الگوها را در مرورگر خود با خیال راحت ایجاد، آزمایش و اشکالزدایی کنید.
عبارت منظم دقیقاً چیست؟
یک عبارت منظم (regex) الگویی است که به زبانی کوتاه نوشته شده و کامپیوتر آن را با متن تطبیق میدهد. چند بلوک اساسی، بیشتر آنچه را که شما همیشه استفاده خواهید کرد، توصیف میکنند:
- شخصیتهای کلامی خودتان را بشناسید: الگو
catبا "cat" در هر متنی مطابقت دارد. .با هر کاراکتر واحدی به جز یک کاراکتر جداکننده سطر، مطابقت دارد.- کلاسهای شخصیت مانند
[0-9]با یک کاراکتر از مجموعه مطابقت دارد - در اینجا، هر عددی. خلاصهنویسیها کمک میکنند:\dیعنی هر عددی،\wبه معنی کاراکترهای کلمه (حروف، اعداد، زیرخط) و\sیعنی فضای سفید - کمیتسنجها نشان میدهد که یک چیز چند بار میتواند تکرار شود:
*یعنی صفر یا بیشتر+به معنی یک یا چند،?یعنی صفر یا یک، و{3}یعنی دقیقا سه بار - لنگرها تطابقها به یک مکان مرتبط هستند:
^به معنی ابتدای متن (یا خط) است، و$به معنی پایان - گروهها داخل پرانتز، مثلاً
(\d+)، بخشی از مسابقه را ضبط کنید تا بتوانید دوباره از آن استفاده کنید - برای مثال، هنگام تغییر متن.
در کنار هم، الگوهایی مانند ^\d{4}-\d{2}-\d{2}$ می گوید: "متن کامل باید چهار عدد، یک خط تیره، دو عدد، یک خط تیره و دو عدد باشد" - تاریخ در قالب 2026-10-26. خواندن آن از چپ به راست، قطعه به قطعه، کل مهارت است. هیچ کس الگوهای بلند را به خاطر نمی آورد. همه آنها را در دسته های کوچک درست می کنند و هر قطعه را آزمایش می کنند.
مرحله 1: با مثال های واقعی شروع کنید، نه الگوها
رایجترین اشتباه در regex این است که ابتدا الگو را مینویسیم و سپس دادههای آزمایشی را میسازیم. ترتیب را برعکس میکنیم:
- 5 تا 10 نمونه واقعی جمعآوری کنید متنی که الگوی شما باید با آن مطابقت داشته باشد - آدرسهای ایمیل واقعی، تاریخهای واقعی، کدهای محصول واقعی از دادههای واقعی شما.
- 3 تا 5 مثال از اینکه این نباید چگونه باشد، جمعآوری کنید. این مرحلهای است که افراد از آن صرف نظر میکنند، و همان مرحلهای است که کلیترین الگوها را شناسایی میکند. الگوهای آدرس ایمیل "not-an-email" و "user@" باید رد شوند؛ الگوی تاریخ "2026-13-45" باید رد شود.
- آنها را به عنوان رشته آزمایشی خود در تستر قرار دهید، یکی در هر خط، به طوری که هر مثال همزمان ظاهر شود.
آزمایشگر Regex نمونه های خود را باز کرده و در قسمت متن تست وارد کنید. اکنون هر تغییر در الگو بلافاصله همه موارد را تحت تأثیر قرار می دهد - موارد منطبق روشن تر می شوند و موارد غیر منطبق تاریک تر می مانند. این حلقه بازخورد زنده روش عالی برای رفع اشکال است: یک قطعه کوچک را تغییر دهید، همه نمونه ها را ببینید، تکرار کنید.
مرحله 2: قطعات الگو را بسازید
سعی نکنید کل الگو را یکجا بنویسید. آن را مرحله به مرحله بسازید و بعد از هر مرحله آن را آزمایش کنید:
- ابتدا آن را با یک مثال تطبیق دهید. اگر می خواهید شماره تلفن هایی مانند 0300-1234567 را مطابقت دهید
\d+با اعداد شروع کنید و بررسی کنید که مطابقت دارد. سپس خط تیره را اضافه کنید:\d+-\d+سپس طول را محکم کنید:\d{4}-\d{7}. - لنگرها را فقط زمانی اضافه کنید که منظورتان «کل» است.
^و$بدون , الگو در هر نقطه از متن یافت می شود - مفید برای جستجو، خطرناک برای اعتبار سنجی. یک الگوی اعتبارسنجی (مثلاً برای یک فیلد فرم) تقریباً همیشه هر دو لنگر را میخواهد. - بعد از هر مرحله، نمونههای منفی را آزمایش کنید. لحظهای که یک مثال «نباید پیدا شود» روشن میشود، دقیقاً قطعهای را پیدا کردهاید که بیش از حد گشاد شده است - و قبل از رشد بیشتر الگوی آن را میدانید.
- از گروهها برای قطعات قابل استفاده مجدد استفاده کنید. اگر قصد دارید تاریخها را از 26/10/2026 به 2026-10-26 تغییر قالب دهید، روز، ماه و سال را به صورت سه گروه ثبت کنید —
(\d{2})/(\d{2})/(\d{4})— به طوری که تغییر بتواند به هر بخش جداگانه ارجاع دهد.
این رویکرد گام به گام برای الگوی اول کند و برای هر الگوی بعد از آن سریع به نظر میرسد، زیرا شما اشکالزدایی هیولاهای تکمیلشده را متوقف میکنید و شروع به اتصال قطعات آزمایششده میکنید.
مرحله 3: مسابقه را بخوانید، نه فقط شماره مسابقه را
تستری که به سادگی میگوید «3 مورد منطبق پیدا شد» مفیدترین اطلاعات را پنهان میکند. ببینید واقعاً چه چیزی پیدا شده است، کاراکتر به کاراکتر:
- آیا تطابق کامل است یا یک زیررشته؟ الگویی از "کلمات" که فقط با سه حرف اول یک کلمه طولانی مطابقت دارند، به گونه ای که شمارش آشکار نمی شود، نادرست است.
- آیا با رشته خالی مطابقت داشت؟
*الگوها را میتوان در هر نقطه با هیچ چیز تطبیق داد - منبع کلاسیکی از نتایج گیجکننده و خروجی به ظاهر بیپایان. - آیا گروهها طبق انتظار شما پیش میروند؟ قبل از استفاده از هر گروه در یک تبدیل، متن گرفته شده از آن را بررسی کنید؛ گروهی که با یک کاراکتر شروع میشود، هر تبدیلی را که با آن تماس پیدا کند، خراب میکند.
- آیا در هر خط به یک شکل عمل میکند؟ با چندین خط ورودی آزمایش کنید. الگویی که در یک خط کار میکند ممکن است در خط بعدی به دلیل شکست خط، فاصلههای انتهایی یا فرمتهای مختلف بین دادههای واقعی، با شکست مواجه شود.
اگر یک تطابق شما را شگفتزده کرد، رشتهی آزمایشی را به کوچکترین نمونهای که همچنان شما را شگفتزده کند، کوچک کنید. تصور ده خط ورودی که بدرفتاری میکنند دشوار است؛ یک خط که بدرفتاری میکند دقیقاً به شما میگوید کجا را جستجو کنید.
پنج اشتباهی که همه مرتکب میشوند (و راه حل هر کدام)
- فراموش کردن فرار از شخصیت های خاص
.،+،(و?کاراکترهایی مانند "" در regex معنای خاصی دارند. برای مطابقت با نقطه در "example.com"\.بنویس،.خیر — در غیر این صورت، نقطه با هر کاراکتری، از جمله کاراکترهایی که هرگز نمیخواستید، مطابقت خواهد داشت. - تطبیق حریص خوردن بیش از حد. به طور پیشفرض،
.*«تا حد امکان به دست میآید.»<b>bold</b>«الگوهای کاربردی مانند<.*>به جای فقط تگ اول، کل رشته را تطبیق میدهد. برای کندتر کردن آن?اضافه کردن -<.*?>- و در اولین تگ پایانی متوقف میشود. - بدون لنگر در الگوهای اعتبار سنجی. فرم بررسی کد چهار رقمی که
\d{4}نوشته شده است، با خوشحالی "abc1234xyz" را می پذیرد، زیرا اعداد در جایی در داخل ظاهر می شوند. لنگرها -^\d{4}$— او «شامل» را به «دقیقاً همان چیزی که هست» تغییر میدهد. - کلاسهای شخصیتپردازی بسیار سخاوتمندانه.
[A-Za-z]+به نظر میرسد امن باشد تا زمانی که نامی را بپذیرد که عاری از اعداد باشد اما به هر حال ناقص باشد، یا الگوی نام کاربری فاصله را بپذیرد زیرا\w«هر کاراکتری» در نظر گرفته شد. هر کلاس را با مثالهای منفی آن بررسی کنید. - فقط دارم مسیر شاد رو امتحان میکنم. الگویی که روی سه نمونه کامل آزمایش شده و روی نمونه های ناقص صفر آزمایش شده است، آزمایش نشده است. رشتههای خالی، فضاهای اضافی، بخشهای از دست رفته و فرمتهای مختلط ورودیهایی هستند که کاربران واقعی و دادههای واقعی واقعاً دارند - ابتدا آنها را آزمایش کنید، نه آخرین.
سه الگوی کاربردی، که به صورت زنده ایجاد شدهاند
با مثال های شما آزمایشگر Regex بذار اینو امتحان کنم:
- بررسی ایمیل (پایه):
^[\w.]+@[\w]+\.[a-z]{2,}$— یک یا چند کاراکتر کلمه یا نقطه، علامت @، دامنه، نقطه و انتهای دامنه حداقل دو کاراکتری. این یک بررسی سلامت است، نه اعتبارسنجی کامل ایمیل — قوانین ایمیل واقعی بسیار پیچیدهتر هستند و یک کتابخانه مخصوص اعتبارسنجی در محیط عملیاتی، هر الگوی واحدی را شکست میدهد. - تمام اعداد موجود در متن را پیدا کنید:
\d+(\.\d+)?- اعداد صحیح و اعشاری، مفید برای استخراج مقادیر یا اندازهگیریها از متنهای شلوغ، قبل از وارد کردن آنها در ماشین حساب. - فضاهای اضافی را پاک کنید: فضاهای تکرار شده قبلی را الگوسازی کنید.
\s+با فاصله جایگزین کنید، سپس نتیجه را فشرده کنید شمارنده کلمات بررسی کنید که آیا طول متن مطابق انتظار شما تغییر کرده است یا خیر.
ادغام تستر با سایر ابزارهای رایگان
کار با Regex به ندرت به تنهایی انجام میشود. چند ابزار مرورگر رایگان این کار را کامل میکنند:
- ابتدا ورودی کثیف را آماده کنید: قبل از تست متن را جایگذاری کنید حذف فاصله های اضافی برای حذف فضاهای اضافی و خطوط خالی، به طوری که الگوی شما بر اساس محتوای واقعی قضاوت شود، نه نویز قالببندی.
- طول و تعداد را بررسی کنید: پس از جستجو و تبدیل، قبل از استفاده از آن در هر نقطه، متن پاک شده را تأیید کنید شمارنده کلمات یا تبدیل حالت متن استفاده کنید.
- ایجاد دادههای آزمایشی: برای یک آزمون به ده نمونه نام، عدد یا جمله نیاز دارید؟ سازنده لورم ایپسوم متن پرکننده واقعگرایانهای را در عرض چند ثانیه ارائه میدهد.
- ذخیره الگوها: الگوهای Regex کد هستند. الگوهای کاری را در یادداشتهای نوشتاری ساده ذخیره کنید، با یک مثال برای هر یک که مطابقت دارد و یکی رد میکند - آینده از شما تشکر خواهد کرد، و همچنین از هر کسی که الگو را به ارث میبرد.
سوالات عمومی
آیا برای تست regex لازم است چیزی نصب شود؟
خیر آزمایشگر Regex کاملاً در مرورگر شما اجرا میشود - بدون نیاز به ثبت نام، بدون نیاز به نصب، و متن آزمایشی شما هرگز از دستگاه شما خارج نمیشود. نکته آخر مهم است: هرگز رمزهای عبور، اطلاعات خصوصی مشتری یا اسناد محرمانه را در یک تستر آنلاین تصادفی قرار ندهید. ابزاری که فقط مرورگر را پشتیبانی میکند، دادههای آزمایشی شما را در دستگاه خودتان نگه میدارد.
چرا الگوی من در تستر کار میکند اما در کد من کار نمیکند؟
زبانهای برنامهنویسی مختلف طعمهای regex کمی متفاوت دارند - قوانین فرار، رفتار لنگر خط و ویژگیهای پشتیبانی شده متفاوت است. بررسی کنید که آیا زبان شما نیاز به فرار دوگانه دارد (در بسیاری از زبانها، بک اسلش باید دو بار در یک رشته نقل قول نوشته شود)، و قبل از ارسال، الگو را در آزمایشکننده زبان یا اسکریپت کوچک خود امتحان کنید.
آیا regex ابزار مناسبی برای هر مشکل متنی است؟
خیر - و دانستن اینکه چه زمانی از آن استفاده نکنیم بخشی از مهارت است. تجزیهکنندهها و کتابخانههای خاص برای HTML، قالبهای داده ساختاریافته یا اعتبارسنجی کامل ایمیل، ایمنتر و خواناتر هستند. Regex برای جستجو، اعتبارسنجی قالبهای ساده و تمیز کردن متن میدرخشد - و وقتی الگو طولانیتر از آنچه توصیف میکند میشود، به یک مشکل تبدیل میشود.
چگونه میتوانم در regex بهتر شوم؟
درست مثل اینجا: الگوهای کوچک، مثالهای واقعی، آزمایش زنده. هر الگویی که ایجاد و اشکالزدایی میکنید، کمی بیشتر از زبان را به شما میآموزد و در عرض چند هفته، آن الگوهایی که زمانی مانند کد مرموز به نظر میرسیدند، شروع به خواندن مانند جملات معمولی میکنند.
همین الان شروع کنید: آزمایشگر Regex باز کنید، سه خط از متن واقعی خود را بچسبانید، و یک الگوی کوچک ایجاد کنید که دقیقاً با آنچه شما میخواهید مطابقت داشته باشد - و هیچ چیزی که نمیخواهید.