أداة اختبار Regex

تعمل في المتصفح أدوات مساعدة

اكتب تعبيراً نمطياً بصيغة JavaScript، وبدّل الرايات (g, i, m, s, u, y)، وشاهد فوراً كل تطابق، والمجموعات المسمّاة والمرقّمة، والمواضع (indexes)، ومعاينة الاستبدال. تتضمن الأداة مرجعاً سريعاً لرموز التعابير النمطية.

الخصوصية: تعمل هذه الأداة بالكامل في متصفحك. لا تغادر بياناتك جهازك أبداً.
جارٍ تحميل الأداة…

كيفية استخدام أداة اختبار Regex

  1. اكتب تعبيراً نمطياً بصيغة JavaScript في مربع النمط (أو اضغط «تحميل مثال»).
  2. الصق النص المراد اختباره؛ تُبرز التطابقات فوراً وتُدرج في الجدول.
  3. بدّل الرايات مثل i (تجاهل حالة الأحرف) أو m (تعدد الأسطر) لترى كيف تتغير النتائج.
  4. أدخل اختيارياً نص استبدال لمعاينة عملية البحث والاستبدال.
  5. انسخ التطابقات بصيغة CSV أو نزّل النص بعد الاستبدال.

مزايا أداة اختبار Regex

  • مطابقة فورية أثناء الكتابة مع إبراز كل تطابق داخل النص
  • جدول بالتطابقات يعرض الموضع (index) وموضع النهاية والسطر:العمود وكل مجموعة مرقّمة أو مسمّاة
  • الرايات g وi وm وs وu وy كأزرار تبديل بنقرة واحدة؛ وتُقبل الصيغ الحرفية مثل /abc/gi
  • معاينة الاستبدال مع دعم $1 و$<name> و$& و$$
  • كشف ساكن (static) للأنماط المسبّبة للتراجع الكارثي (catastrophic backtracking) مع ميزانية زمنية حتى لا تتجمد الصفحة أبداً
  • أخطاء صياغة واضحة واحترافية مع تلميح إلى السبب المحتمل

مثال على أداة اختبار Regex

استخراج اسم المستخدم والنطاق من عناوين البريد الإلكتروني

الإدخال:

Pattern: (?<user>[\w.+-]+)@(?<domain>[\w-]+\.[a-z]{2,})
Text: layla@example.com, omar.said@mutqan.sa

النتيجة:

#1 layla@example.com  index 0  user=layla  domain=example.com
#2 omar.said@mutqan.sa  index 19  user=omar.said  domain=mutqan.sa

الأسئلة الشائعة حول أداة اختبار Regex

أي نكهة (flavour) من التعابير النمطية تستخدمها الأداة؟

تعابير JavaScript (ECMAScript) النمطية كما ينفّذها متصفحك — وهو المحرك نفسه الذي يستخدمه Node.js وDeno وكود المتصفح. تعمل معظم الأنماط القادمة من PCRE وPython وJava دون تغيير؛ كما تُدعم النظرة الخلفية (lookbehind) والمجموعات المسمّاة وفئات Unicode بصيغة \p{…}.

لماذا يظهر التطابق الأول فقط؟

من دون الراية g (global) يتوقف التعبير النمطي عند أول تطابق. فعّل خانة g لإدراج كل التطابقات؛ وهي مفعّلة افتراضياً.

كيف أشير إلى المجموعات في نص الاستبدال؟

استخدم $1 و$2 للمجموعات المرقّمة، و$<name> للمجموعات المسمّاة، و$& للتطابق الكامل، و$$ لعلامة دولار حرفية — تماماً كما في String.prototype.replace في JavaScript.

ماذا يحدث مع الأنماط البطيئة أو الكارثية؟

تكشف الأداة بشكل ساكن المحدِّدات الكمية المتداخلة غير المحدودة مثل (a+)+ وترفض تشغيلها على النصوص الكبيرة. كما أن التنفيذ مقيّد بمهلة زمنية حتى لا تتجمد الصفحة أبداً.

هل يُرفع نصي إلى أي مكان؟

لا. تعمل المطابقة بالكامل في متصفحك؛ ولا يُرسل أي شيء إلى الخادم.

ملاحظات تقنية

تُصرّف الأداة نمطك باستخدام محرك RegExp الأصلي في المتصفح وتتنقل بين التطابقات عبر exec()، مع تقديم lastIndex يدوياً عند التطابقات الفارغة لتجنب الحلقات اللانهائية. ويحلّل محلّل صغير شجرة النمط بحثاً عن المحدِّدات الكمية المتداخلة غير المحدودة والتناوبات المتداخلة (overlapping alternations) — وهي المصادر الكلاسيكية للتراجع الأسّي — ويرفض تشغيل الأنماط الخطرة على مدخلات تتجاوز 2,000 حرف.

تُبلَّغ المواضع بوحدات ترميز UTF-16، تماماً كما تفعل دوال String في JavaScript، بحيث يمكن استخدام المواضع مباشرةً في استدعاءات slice().