Utilia

اختبار التعبيرات النمطية (Regex)

اختبر تعبيرات JavaScript النمطية مباشرةً مع إبراز التطابقات ومجموعات الالتقاط والاستبدال وشرح واضح لكل جزء من النمط.

الأعلام (Flags)

التطابقات
#الموضعالتطابقالمجموعات

شرح النمط

    كيف تستخدم أداة اختبار التعبيرات النمطية

    1. اكتب نمطك في حقل التعبير النمطي دون الشرطتين المائلتين المحيطتين به. تظهر الشرطتان والأعلام المفعّلة حول الحقل، على شكل /pattern/g.
    2. فعّل الأعلام (Flags) التي تحتاجها: g ‏(global)، أو i (تجاهل حالة الأحرف)، أو m ‏(multiline)، أو s ‏(dotAll)، أو u ‏(unicode)، أو y ‏(sticky).
    3. الصق النص المراد البحث فيه في نص الاختبار. تُبرز التطابقات أثناء الكتابة، ويسرد الجدول كل تطابق مع موضعه ومجموعات الالتقاط الخاصة به.
    4. لتجربة استبدال، املأ حقل الاستبدال. يعرض مربع النتيجة بعد الاستبدال النص بعد استبدال كل تطابق، جاهزًا للنسخ.
    5. اقرأ شرح النمط للتحقق مما يفعله كل جزء من تعبيرك. لا تعرف من أين تبدأ؟ انقر تحميل مثال.

    ماذا تعرض الأداة؟

    • إبراز التطابقات: يُعلَّم كل تطابق في نص الاختبار، فترى بنظرة واحدة ما التُقط وما فات.
    • جدول التطابقات: رقم كل تطابق، وموضعه (إزاحة الحرف من البداية، بدءًا من 0)، والنص المطابق، وقيمة كل مجموعة التقاط. تظهر المجموعات المسمّاة مثل (?<year>\d{4}) تحت اسمها، وتظهر المجموعات التي لم تشارك في التطابق بعبارة «(لم تتطابق)». تُسرد أول 1,000 تطابق.
    • الاستبدال: يستخدم نص الاستبدال صياغة JavaScript: ‏$1 أو $2 للمجموعات المرقّمة، و$<name> للمجموعات المسمّاة، و$& للتطابق كاملًا، و$$ لعلامة الدولار الحرفية. ومن دون العلم g، لا يُستبدل إلا التطابق الأول.
    • الشرح: يُقسَّم النمط إلى رموز (نص حرفي، وفئات أحرف، ومراسٍ، ومجموعات، ومُكمِّمات، ونظر أمامي وخلفي، ومراجع خلفية)، ولكل منها وصف قصير. وتُزاح المجموعات المتداخلة، ما يجعل مراجعة الأنماط الطويلة أسهل بكثير.

    الأعلام باختصار

    العلم التأثير
    g يجد كل التطابقات بدلًا من التوقف عند الأول
    i يتجاهل الفرق بين الأحرف الكبيرة والصغيرة
    m يطابق ^ و$ بداية كل سطر ونهايته
    s يطابق . فواصل الأسطر أيضًا
    u وضع Unicode الكامل: تُعالج \u{…} و\p{…} والرموز التعبيرية كأحرف مفردة
    y لاصق: يجب أن يبدأ كل تطابق حيث انتهى السابق تمامًا

    التراجع الكارثي

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

    تحمي هذه الأداة متصفحك بثلاث طرق: تجري المطابقة في عامل خلفي يُوقف بعد 1.5 ثانية، ويُحدّ نص الاختبار بـ 100,000 حرف، ويحذّرك الشرح عندما تحتوي مجموعة مكرّرة على مُكمِّم مفتوح آخر. وإذا تجاوز النمط المهلة، فأعد كتابته بحيث لا يمكن مطابقة كل حرف إلا بطريقة واحدة، مثل a+$ بدلًا من (a+)+$.

    الأسئلة الشائعة

    أي نوع من التعبيرات النمطية تستخدم هذه الأداة؟

    تستخدم محرّك JavaScript ‏(ECMAScript) في متصفحك، تمامًا كما تفعل new RegExp() وString.prototype.replace() في شيفرتك. تتشارك معظم الصياغة مع PCRE وPython وJava، لكن بعض الميزات تختلف: المُكمِّمات الاستحواذية والمجموعات الذرّية غير موجودة في JavaScript، أما النظر الخلفي فمدعوم في كل المتصفحات الحالية.

    لماذا لا يجد نمطي إلا تطابقًا واحدًا؟

    لأن العلم g غير مفعّل. من دونه تتوقف JavaScript بعد التطابق الأول، ولا يغيّر الاستبدال سواه.

    كيف أطابق نقطة أو قوسًا أو علامة استفهام حرفيًا؟

    هرّبها بشرطة مائلة عكسية: \. و\[ و\?. يعرض الشرح الأحرف المهرَّبة مع عبارة «(مُهرَّب)» لتتحقّق منها.

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

    لا. يُعالَج النمط والنص في متصفحك فقط، ما يجعل هذه الأداة آمنة لملفات السجلات أو البيانات التي تحتوي على معلومات شخصية.

    لماذا يختلف الموضع عن رقم العمود في محرّري؟

    تُعدّ المواضع بالأحرف بدءًا من 0 عبر كل الأسطر، كما تفعل match.index في JavaScript. يُحسب فاصل السطر حرفًا واحدًا، ويُحسب الرمز التعبيري الواقع خارج المستوى متعدد اللغات الأساسي حرفين.