UltKit

ریجیکس ٹیسٹر

پیٹرن لکھیں، مطلوبہ فلیگز منتخب کریں اور کچھ متن پیسٹ کریں: ٹائپ کرتے ہی ہر میچ نمایاں ہو جاتا ہے اور اپنی پوزیشن اور کیپچر گروپس کے ساتھ فہرست میں دکھایا جاتا ہے۔ پیٹرن آپ کے براؤزر کے اپنے JavaScript ریجیکس انجن پر چلتا ہے، اس لیے نتائج آپ کے کوڈ جیسے ہی ہوتے ہیں اور متن آپ کے ڈیوائس پر ہی رہتا ہے۔

فلیگز

0 حروف · 0 الفاظ · 0 سطریں

میچز یہاں نمایاں ہوں گے۔

0 حروف · 0 الفاظ · 0 سطریں

یہ مکمل طور پر اسی براؤزر ٹیب میں چلتا ہے۔ آپ کا متن کبھی اپ لوڈ یا محفوظ نہیں کیا جاتا۔

JavaScript ریجیکس ٹوکنز

پہلے میچ کا کالم اس JavaScript انجن سے بنا جس نے یہ صفحہ بنایا، ہر پیٹرن کو اس کے متن پر چلا کر۔

ٹوکنمطلبپیٹرنمتنپہلا میچ
\dہندسہ 0–9/\d+/Order 66 shipped66
\wحرف، ہندسہ یا انڈر اسکور (ASCII)/\w+/snake_case-idsnake_case
\sخالی جگہ، بشمول ٹیب اور لائن بریک/\s+/two spaces
.لائن بریک کے سوا کوئی بھی حرف (s ہو تو سب)/a.c/abc a-cabc
^ $ان پٹ کی ابتدا اور اختتام (m کے ساتھ لائن کی)/^\w+$/singlesingle
[abc]درج حروف میں سے ایک/[aeiou]/rhythm and bluesa
[^abc]کوئی بھی حرف جو درج نہ ہو/[^0-9]+/2026-10-18-
* + ?0 یا زیادہ، 1 یا زیادہ، 0 یا 1/colou?r/color colourcolor
{n,m}n اور m بار کے درمیان/\d{2,4}/7 42 1999 12345642
(…)کیپچرنگ گروپ/(\d+)px/width: 320px320px
(?<name>…)نامزد کیپچرنگ گروپ/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)بغیر کیپچر کا گروپ/(?:ab)+/ababab!ababab
a|bکوئی ایک طرف/cat|dog/hotdogdog
\bلفظ کی حد/\bcat\b/concat catcat
(?=…)اس کے بعد (lookahead)/\d+(?=%)/50 of 75%75
(?<!…)اس سے پہلے نہیں (negative lookbehind)/(?<!\$)\b\d+/$30 or 4040
\p{L}کوئی بھی Unicode حرف (u درکار)/\p{L}+/unaïve 東京naïve

چھ فلیگز اور ان کا اثر

g (گلوبل) پہلے میچ پر رکنے کے بجائے ہر میچ تلاش کرتا ہے؛ اس کے بغیر فہرست میں صرف ایک اندراج ہوتا ہے۔ i حروف کے چھوٹے بڑے ہونے کو نظر انداز کرتا ہے۔ m (ملٹی لائن) ^ اور $ کو پورے متن کے بجائے ہر سطر کے آغاز اور اختتام پر میچ کراتا ہے، جو آخر میں خالی جگہوں جیسے پیٹرن کے لیے درکار ہوتا ہے۔ s (dotAll، ES2018 میں شامل) . کو سطر کے وقفوں سے بھی میچ ہونے دیتا ہے۔ u (یونیکوڈ) متن کو کوڈ پوائنٹس کے طور پر لیتا ہے، اس لیے ایک ایموجی ایک ہی حرف شمار ہوتا ہے، اور \p{L} جیسے پراپرٹی ایسکیپس کو فعال کرتا ہے جو کسی بھی رسم الخط کے کسی بھی حرف سے میچ کرتے ہیں۔ y (اسٹکی) صرف عین موجودہ مقام پر میچ کرتا ہے، جو ٹوکنائزر استعمال کرتے ہیں۔ JavaScript میں میچ انڈیکس کے لیے d اور کلاسز میں سیٹ آپریشنز کے لیے v بھی ہے؛ یہ ٹیسٹر اوپر کے چھ تک محدود ہے۔

ٹیسٹ متن کے نیچے ہر میچ کا انڈیکس اور اس کے گروپس دکھائے جاتے ہیں۔ نمبر والے گروپس سادہ قوسین سے بنتے ہیں، (?:…) بغیر کیپچر کے گروپ بناتا ہے، اور (?<year>\d{4}) نام والا گروپ بناتا ہے جو اپنے نام سے ظاہر ہوتا ہے، جیسا کہ ISO تاریخ کی مثال میں دکھایا گیا ہے۔ عام پیٹرنز مینو ای میل ایڈریس، URL، IPv4 ایڈریس، ہیکس رنگ، UUID، دہرائے گئے الفاظ اور آخر کی خالی جگہوں کے لیے آزمودہ نقطۂ آغاز شامل کرتا ہے۔ ای میل پیٹرن کو صرف سرسری جانچ سمجھیں، توثیق نہیں: مکمل ایڈریس گرامر کہیں زیادہ وسیع ہے، اور اصل ٹیسٹ پیغام بھیج کر دیکھنا ہے۔

لُک بی ہائنڈ اور کیٹاسٹرافک بیک ٹریکنگ

لُک اراؤنڈز کسی مقام کے اردگرد کو بغیر استعمال کیے جانچتے ہیں۔ لُک اہیڈ، (?=…) اور (?!…)، JavaScript کا ہمیشہ سے حصہ رہا ہے؛ لُک بیہائنڈ، (?<=…) اور (?<!…)، ES2018 میں آیا اور 2023 میں Safari 16.4 کے ساتھ ہر بڑے براؤزر تک پہنچ گیا۔ چنانچہ (?<=\$)\d+ "$42" میں ڈالر کی علامت کے بغیر 42 تلاش کرتا ہے۔ کئی دوسرے انجنوں کے برعکس JavaScript لُک بیہائنڈ کی کسی بھی لمبائی کی اجازت دیتا ہے۔

JavaScript انجن بیک ٹریکنگ پر چلتا ہے: جب کوئی راستہ ناکام ہو تو وہ پیچھے جا کر متبادل آزماتا ہے۔ (a+)+$ جیسے نیسٹڈ کوانٹیفائرز اسے ایک ہی متن کو بانٹنے کے بے شمار طریقے دے دیتے ہیں، اس لیے 30 a کے بعد x والی سٹرنگ میں سیکنڈ اور چند حروف مزید ہوں تو گھنٹے لگ سکتے ہیں۔ یہ کیٹاسٹروفک بیک ٹریکنگ ہے، اور سرورز پر یہ ReDoS یعنی سروس روکنے کا حملہ بن جاتی ہے؛ اسی خامی والے ایک WAF اصول نے 2 جولائی 2019 کو Cloudflare کا نیٹ ورک تقریباً آدھے گھنٹے کے لیے بند کر دیا تھا۔ چونکہ یہ ٹیسٹر آپ کے ٹیب میں چلتا ہے، ایسا پیٹرن صفحہ منجمد کر سکتا ہے؛ صفحہ ری لوڈ کریں اور پیٹرن یوں دوبارہ لکھیں کہ دو کوانٹیفائرز ایک ہی حروف پر دعویٰ نہ کر سکیں، .* کی جگہ [^,]* جیسی تنگ کلاسز یا اینکرز استعمال کریں۔ میچ کرنے کے بجائے متن میں ترمیم کے لیے ٹیکسٹ ٹولز دیکھیں؛ مزید ڈیولپر یوٹیلیٹیز ڈیولپر ٹولز ہب میں ہیں۔

اکثر پوچھے جانے والے سوالات

میرا ریجیکس صرف ایک ہی میچ کیوں ڈھونڈتا ہے؟
g فلیگ بند ہے۔ اس کے بغیر انجن پہلے میچ کے بعد رک جاتا ہے۔ ہر میچ کی فہرست کے لیے g منتخب کریں؛ صرف y فلیگ بھی کئی میچ تلاش کرتا ہے، لیکن صرف تب جب وہ براہِ راست ایک کے بعد ایک آئیں۔
کیا JavaScript میں \d دوسری زبانوں کے ہندسوں سے بھی میچ کرتا ہے؟
نہیں۔ JavaScript میں \d کا مطلب صرف 0 سے 9 ہے اور \w صرف ASCII حروف، ہندسے اور انڈر اسکور، u فلیگ کے ساتھ بھی۔ دوسرے رسم الخط کے لیے u کے ساتھ \p{Nd} یا \p{L} استعمال کریں۔
کیا یہاں ٹیسٹ کیا گیا پیٹرن Python یا PHP میں بھی ویسا ہی کام کرے گا؟
بنیادی نحو منتقل ہو جاتی ہے، مگر تفصیلات مختلف ہیں: Python کے نام والے گروپس (?P<name>…) لکھے جاتے ہیں، PHP اور Python پوزیسیو کوانٹیفائرز سپورٹ کرتے ہیں جو JavaScript میں نہیں، اور لُک بیہائنڈ کے اصول مختلف ہیں۔ ہدف انجن میں دوبارہ ٹیسٹ کریں۔
لفظی نقطے یا بریکٹ سے میچ کیسے کروں؟
اسے بیک سلیش سے ایسکیپ کریں: \. نقطے سے اور \[ کھلی قوسین سے میچ کرتا ہے۔ کریکٹر کلاس کے اندر زیادہ تر علامات پہلے ہی لفظی ہوتی ہیں، اس لیے [.] بھی صرف نقطے سے میچ کرتا ہے۔
پیٹرن ٹائپ کرتے ہوئے صفحہ کیوں رک گیا؟
غالباً پیٹرن نے آپ کے متن پر کیٹاسٹروفک بیک ٹریکنگ شروع کر دی۔ صفحہ ری لوڈ کریں، پھر (.*)* یا (a+)+ جیسے نیسٹڈ کوانٹیفائرز سے بچیں اور ہر حصے کو کم سے کم میچ کرنے والا بنائیں۔