بدون رفع, 100% محلي، بدون حساب

شرح عملي

كيف تختبر تعبيرًا نمطيًا دون تثبيت أي شيء

كتبتَ نمطًا وتحتاج إلى معرفة ما إذا كان يطابق فعلًا ما تتوقعه قبل أن تضعه في الشيفرة. تثبيت أداة سطح مكتب أو لصق سجل خاص في موقع عشوائي مبالغة فيه، وغالبًا ما يكون محفوفًا بالمخاطر. يوضّح هذا الدليل كيف تشغّل تعبيرًا نمطيًا على نصك الخاص مباشرة في المتصفح، وتبدّل الأعلام التي تغيّر السلوك، وتقرأ مجموعات الالتقاط التي يستخرجها، وتشاهد المطابقات تُظلَّل بشكل مباشر، دون أن يغادر النمط ولا النص علامة تبويبك أبدًا.

خطوة بخطوة

  1. افتح أداة اختبار التعبير النمطي واكتب نمطك في الحقل الواقع بين الشرطتين المائلتين. أنت لا تكتب الشرطتين بنفسك: تعرضهما الأداة كي ترى النمط كما يقرأه المحرك. الصق نصك التجريبي في المربع أدناه، مثلًا بضعة أسطر من سجل، أو قائمة بريد إلكتروني، أو كتلة شيفرة تريد البحث فيها.
    نمط تعبير نمطي وسلسلة أعلام مُدخَلان في الأداة، مع نص تجريبي ملصوق في المربع أدناه
  2. اضبط الأعلام في المربع الصغير المجاور للنمط. العلم g يجد كل مطابقة بدل التوقف عند الأولى؛ والعلم i يجعل المطابقة غير حساسة لحالة الأحرف؛ والعلم m يجعل المرساتين ^ و $ تطابقان بداية كل سطر ونهايته بدل النص كله؛ والعلم s يجعل النقطة تطابق فواصل الأسطر أيضًا. اجمعها بحرية، مثلًا gim.
  3. اضغط على اختبار. تُظلَّل كل مطابقة مباشرة داخل نصك، وتعرض القائمة أدناه كل مطابقة مع موضعها وقيمة كل مجموعة التقاط. عدّل النمط وشغّله من جديد: تتحدّث المعاينة كي تضيّق النمط حتى يلتقط بالضبط ما قصدته ولا شيء غيره.
    نتيجة الاختبار: مطابقات مُظلَّلة بشكل مباشر وقائمة تعرض موضع كل مطابقة ومجموعات التقاطها

مجموعات الالتقاط، المُسمّاة والمرقّمة

مجموعة الالتقاط هي الجزء من نمطك المحاط بأقواس، وهي طريقتك لاستخراج قطعة من كل مطابقة بدل مجرد تأكيد مطابقة الكل. تُعَدّ المجموعات المرقّمة من اليسار إلى اليمين حسب قوسها الافتتاحي: في (\d{4})-(\d{2})-(\d{2}) المجموعة 1 هي السنة، والمجموعة 2 الشهر، والمجموعة 3 اليوم. تستخدم المجموعات المُسمّاة صيغة (?<name>...)، فتقرأ (?<year>\d{4}) أفضل بكثير من رقم مجرّد عندما يكبر النمط. إذا أردت التجميع فقط دون التقاط، مثلًا لتطبيق مُكمِّم على عدة أحرف، فاستخدم مجموعة غير ملتقطة (?:...) كي لا تزدحم بها قائمة نتائجك. تعرض الأداة قيمة كل مجموعة لكل مطابقة، وهي أسرع طريقة لتأكيد أنك تستخرج الشريحة الصحيحة.

حين يتعطّل نمط أو يسيء التصرّف

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

كيف يُقيّم المتصفح تعبيرك النمطي regex

تشحن المتصفحات الحديثة بمحرك تعبيرات نمطية ECMAScript مدمج يدعم مجموعة العلامات الكاملة: المطابقة غير الحساسة لحالة الأحرف (i)، ووضع متعدد الأسطر (m)، وdotAll (s)، وUnicode (u)، والعلامة اللاصقة (y). حين تكتب نمطًا في المختبر، يُجمّع المحرك إلى NFA داخلي ويُقيّمه على سلسلة الاختبار بشكل فوري، مُبلِّغًا عن كل موضع تطابق وأي مجموعات التقاط. يحدث التراجع محليًا على معالجك: نمط كـ (a+)+‎ على سلسلة طويلة غير متطابقة قد يدور لثوانٍ، ورؤية ذلك التعليق في المتصفح تغذية مفيدة قبل نشر النمط في كود الإنتاج. لا يغادر أي نص الصفحة، فيمكنك لصق عينات سجل أو أي مدخل دون توجيهه عبر خادم طرف ثالث.

الأدوات المستخدمة في هذا الدليل

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

هل يُرسَل نمطي أو نص الاختبار إلى خادم؟

لا. يعمل التعبير النمطي داخل Web Worker في متصفحك أنت، فيبقى النمط والنص الذي تختبره داخل علامة التبويب. هذا مهم لأن النص الذي تلصقه غالبًا ما يكون سجلًا حقيقيًا، أو قائمة عملاء، أو إعدادًا داخليًا، أي بالضبط نوع البيانات التي لا تريدها على خادم شخص آخر. افتح لوحة الشبكة في أدوات المطوّر بينما تضغط على اختبار ولن ترى أي طلب يحمل نصك إلى الخارج. كما تظل تعمل دون اتصال بمجرد تحميل الصفحة.

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

تستخدم محرك التعابير النمطية الخاص بـ JavaScript المدمج في متصفحك، وهو نفسه الذي يعمل في Node.js وفي أي صفحة ويب. يشمل ذلك الصياغة الشائعة: أصناف الأحرف، والمُكمِّمات، والمراسي، والتبديل، ومجموعات الالتقاط المرقّمة والمُسمّاة، والنظر للأمام والنظر للخلف. بعض الميزات من نكهات أخرى، كالاستدعاء الذاتي على طريقة Perl أو المُكمِّمات التملّكية، ليست جزءًا من محرك JavaScript، فإذا تصرّف نمط نسخته من مشروع PHP أو Python بشكل مختلف، فعادةً ما يكون ذلك الاختلاف في النكهة هو السبب.

المصادر