تست Regex جاوااسکریپت
الگو را با همان موتور RegExp تست کنید که کد JavaScript شما رویش اجرا میشود؛ پس هرچه اینجا تطبیق کند، در کد شما هم تطبیق میکند.
تست Regex جاوااسکریپت
عبارت باقاعدهای که در یک زبان کار میکند ممکن است در زبان دیگر شکست بخورد؛ برای همین امنترین جا برای تست یک الگوی JavaScript، خود یک موتور JavaScript است. این صفحه آزمایشگر Regex را با نمونهای باز میکند که از گروههای نامدار استفاده میکند: الگوی (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})، دو تاریخ در متن آزمایشی و جایگزین $<day>/$<month>/$<year> که آنها را به ترتیب روز، ماه و سال بازنویسی میکند.
موتور، موتور مرورگر خودتان است
چیزی به سرور فرستاده نمیشود: الگو با new RegExp() در همان زبانه مرورگر شما کامپایل میشود. یعنی V8 در Chrome و Edge که موتور داخل Node.js هم هست، SpiderMonkey در Firefox و JavaScriptCore در Safari. هر سه همان قواعد ECMAScript را پیاده میکنند، پس الگویی که اینجا درست رفتار میکند، در نسخههای فعلی در کد فرانتاند یا Node شما هم همان رفتار را دارد.
پرچمها
| پرچم | اثر |
|---|---|
g | همه تطبیقها را پیدا میکند، نه فقط اولی؛ برای جایگزینی همه آنها لازم است |
i | بزرگی و کوچکی حروف را نادیده میگیرد |
m | ^ و $ در هر شکست سطر تطبیق میکنند، نه فقط در ابتدا و انتهای متن |
s | . با شکست سطر هم تطبیق میکند |
u | حالت یونیکد: کل code point بهجای واحدهای UTF-16، و property escapeهایی مثل \p{L} |
y | چسبان (sticky): فقط از جایی تطبیق میدهد که تطبیق قبلی تمام شده است |
d | ابتدا و انتهای هر گروه را ثبت میکند، برای کدی که match.indices را میخواند |
هر حرف دیگری پیش از رسیدن الگو به موتور حذف میشود، از جمله پرچم جدیدتر v. حرفی که دو بار تایپ شود، مثل gg، خطا است و ابزار پیام خود موتور را نشان میدهد.
دامهای رایج در JavaScript
\wو\bفقط A تا Z، a تا z، 0 تا 9 و زیرخط را میشناسند، پسéیا حروف فارسی را نمیبینند. با پرچمu،\p{L}با یک حرف از هر الفبایی تطبیق میکند.- داخل رشته هر بکاسلش باید دوتایی شود:
new RegExp("\\d+")همان الگوی لیترال/\d+/است. این آزمایشگر الگو را همانطور میگیرد که بین دو اسلش مینویسید. - regex با پرچم
g، مقدارlastIndexرا بین فراخوانیهایtest()وexec()به خاطر میسپارد؛ برای همین تست دوباره همان رشته ممکن است اول true و بعد false بدهد. replace()با یک رشته ساده بهعنوان الگو فقط اولین مورد را عوض میکند؛ از regex باgیا ازreplaceAll()استفاده کنید.- در جایگزین،
$1گروه اول است،$<name>یک گروه نامدار،$&کل تطبیق و$$یک علامت دلار واقعی.
جایگزینی با گروههای نامدار
کادر «جایگزینی با» از همان قواعد String.prototype.replace() پیروی میکند. با الگوی نمونه، $<day>/$<month>/$<year> تاریخ 2026-09-24 را به 24/09/2026 تبدیل میکند. گروههای نامدار الگو را ماهها بعد هم خوانا نگه میدارند: match.groups.year گویاتر از match[1] است.
صفحههای مرتبط
با Regex آدرس URL از یک الگوی آماده شروع کنید، یا کلمههای تکراری را با جستوجو و جایگزینی با Regex اصلاح کنید. برای آدرس ایمیل، و برای عدد، شماره تلفن و آدرس IP، راهنمای Regex برای ایمیل و راهنمای الگوهای عدد، تلفن و IP جزئیات را شرح میدهند.