KeroTools

اختبار وتنقيح التعابير النمطية Regex

اختبر تعبيرات Regex وشاهد التطابقات والمجموعات والرايات مباشرة أثناء الكتابة.

//g
2 تطابقات
تطابقات
Contact us at hello@kerotools.com or support@example.org.

النمط والعيّنة يبقيان على جهازك

لا شيء يُحذف لاحقاً

آمن لعيّنات الإنتاج الحقيقية

يعمل في كل متصفح حديث

كيف تعمل

  1. 1

    أدخل نمطك

    اكتبه في الحقل واضبط الرايات التي تنوي استعمالها في الإنتاج.

  2. 2

    الصق نصّاً ممثِّلاً

    ضمّنه الحالات الشائكة والسلاسل التي ينبغي ألّا تتطابق إطلاقاً.

  3. 3

    اقرأ التطابقات والمجموعات

    افحص ما وُجد وما تُخطّي معاً قبل أن تأخذ النمط إلى أي مكان.

لماذا تستخدم هذه الأداة

كل تطابق مُظلَّل حيّاً

شاهد ما يلتقطه النمط فعلاً وأنت تكتبه، بدل التخمين من الصياغة.

مجموعات الالتقاط مفصولة

المجموعات المرقَّمة والمسمّاة مسرودة لكل تطابق، وهنا تكون معظم الأنماط خاطئة فعلاً.

رايات تستطيع رؤيتها

العامة وغير المميِّزة للحالة والمتعددة الأسطر وdotall معروضة صراحةً لا مدفونة في محدِّد.

اختبر ما لا يتطابق أيضاً

الصق السلاسل التي يجب رفضها إلى جانب التي يجب أن تتطابق — وهذا النصف الذي يتخطّاه الناس.

لا شيء يُرفع

النمط والنصّ العيّنة يبقيان في متصفحك، وأسطر سجلّ حقيقية لا تصل إلى خادم.

مجاني بلا حساب

بلا تسجيل، وبلا علامة مائية، وبلا حدّ لكمّ ما تختبره.

النمط الذي يطابق أمثلتك ليس نمطاً يعمل

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

بعض الأنماط تستطيع تعليق العملية التي تشغّلها

هذا هو العطب الذي يحوّل تعبيراً نمطياً إلى انقطاع خدمة، ويستحق المعرفة لأنه خفيّ حتى يقع. فمعظم المحرّكات تطابق بالتراجع: حين يفشل فرع تتقهقر وتجرّب آخر. ومع المكمِّمات المتداخلة — مجموعة مكرَّرة تتكرر هي نفسها، من شكل ‎(a+)+‎ — ينمو عدد الترتيبات الواجب تجريبها نمواً أسّياً مع طول المدخل. وعلى سلسلة متطابقة ينتهي فوراً؛ وعلى سلسلة *تكاد* تتطابق ثم تفشل في النهاية، قد يعمل أطول مما وُجد الكون. وهذا ناقلُ حرمانٍ من الخدمة حين يُطبَّق النمط على مدخل مستخدم، وقد أسقط خدمات كبيرة: فقد نشرت Cloudflare وStack Overflow تقريرَي ما بعد الحادث ينسبان انقطاعاً عالمياً إلى هذا بالضبط. فإن كان في نمطك مكمِّم داخل مجموعة مكمَّمة، فاختبره بسلسلة طويلة غير متطابقة قبل أن يقترب من الإنتاج.

لا توجد لغة تعبيرات نمطية واحدة

الصياغة تبدو قابلة للنقل وهي ليست كذلك. فJavaScript وPCRE المستعملة في PHP وPerl وPython وJava و.NET وأدوات POSIX، كلٌّ يطبّق لهجة مختلفة، والأنماط تنتقل بينها بتغيّرات صامتة في المعنى. والنظر إلى الخلف فخّ شائع: فهو في PCRE منذ عقود ولم يصل إلى JavaScript إلا حديثاً، فنمطٌ يعمل في محرّرك قد يفشل في متصفح. وGo وأنظمة أخرى عدة تستعمل RE2، وهو تصميم مختلف تماماً — يضمن زمناً خطياً، فالتراجع الكارثي أعلاه مستحيل فيه، لكنه يبلغ ذلك بإسقاط المراجع الخلفية والنظر حولاً كلياً. وصياغة المجموعات المسمّاة، وهروب خصائص يونيكود، وحتى ما تشمله ‎\d‎، كلها تتفاوت. فاختبر باللهجة التي ستنشر بها، وإلا كانت النتيجة نجاحاً هنا وفشلاً هناك.

جشعٌ افتراضياً، والنقطة أضيق مما تظن

افتراضان يفسّران حصة كبيرة من الأنماط التي تسلك سلوكاً غريباً. فالمكمِّمات جشعة: ‎.*‎ تأخذ أكبر قدر تستطيع ولا تردّ إلا ما يجب، فـ‎<.*>‎ مطبَّقة على ‎<a><b>‎ تطابق السلسلة كلها لا الوسم الأول. وإضافة علامة استفهام تجعلها كسولة — ‎<.*?>‎ — فتطابق كل وسم على حدة، وهو المقصود دائماً تقريباً. والافتراض الثاني أن النقطة لا تطابق سطراً جديداً. وهذا خفيّ في الأمثلة أحادية السطر ويصير لغزاً لحظة يقابل النمط مستنداً متعدد الأسطر فيتوقف عند أول فاصل؛ وراية dotall تصلحه. وثمة زوج مرتبط يستحق التمييز: الراية المتعددة الأسطر تغيّر معنى ‎^‎ و‎$‎ فتربطهما بكل سطر لا بالسلسلة كلها، وهي لا تفعل شيئاً بالنقطة.

ما لا يُستعمل له التعبير النمطي

تُلقى النصيحة بعدم تحليل HTML بتعبير نمطي مزحةً عادةً، والسبب الكامن دقيق: HTML يتداخل إلى عمق اعتباطيّ، ومطابقة وسم افتتاح بوسم إغلاقه تقتضي عدّاً، والتعبير النمطي لا ذاكرة له ليعدّ بها. وليست المسألة كتابة نمط أفضل — بل صنف اللغة خاطئ. أما عناوين البريد فتفشل على نحو آخر. فالنحو في RFC 5322 يسمح بسلاسل مقتبسة وتعليقات ومحارف لا يتوقّعها أحد، فالنمط المطابق حقاً يبلغ آلاف المحارف ولا يستطيع رغم ذلك إخبارك بالشيء الوحيد المهمّ، وهو أيستقبل العنوان بريداً. والقاعدة العملية للاثنين: استعمل محلّلاً حقيقياً للترميز المبنيّ، وللعنوان تحقّق أن ثمة ‎@‎ وشيئاً على كل جانب، ثم أرسل رسالة تأكيد.

لماذا يهمّ الاختبار المحلي في هذا النوع من النصّ

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

أخطاء شائعة يجب تجنّبها

  • اختبار السلاسل التي ينبغي أن تتطابق وحدها. العطب الذي يعضّ هو المدخل الذي لم تفكر فيه فينزلق — الصق السلاسل التي يجب رفضها أيضاً كلما تغيّر النمط.
  • تداخل مكمِّم داخل مجموعة مكمَّمة. أشكال مثل `(a+)+` تتراجع أسّياً على مدخل يكاد يتطابق، وهذا ناقل حرمان من الخدمة سبّب انقطاعات عالمية موثَّقة.
  • افتراض أن النمط قابل للنقل. النظر إلى الخلف والمجموعات المسمّاة وهروب يونيكود تختلف بين JavaScript وPCRE وPython وRE2 — اختبر باللهجة التي ستنشر بها.
  • نسيان أن `.` لا تطابق سطراً جديداً. نمطٌ يعمل على سطر واحد يتوقف عند أول فاصل في مستند؛ وراية dotall هي المطلوبة لا المتعددة الأسطر.
  • تحليل HTML أو التحقق من بريد بتعبير نمطي. التداخل يحتاج عدّاداً لا يملكه التعبير، ونمط بريد مطابق لا يستطيع رغم ذلك إخبارك أيستقبل العنوان بريداً.

كيف تُقارن

الجانبهذه الأداةمختبِرات عبر الإنترنتلوحة بحث في محرر
إرسال المحتوى إلى خادملا يحدث أبداًغالباً نعملا
مجموعات الالتقاط مفصولةنعمغالباًنادراً
الرايات معروضة صراحةًنعمغالباًجزئياً
يعمل دون فتح مشروعنعمنعملا
حساب أو تسجيلغير مطلوبمطلوب أحياناًغير مطلوب
السعرمجانيمجاني / باقات مدفوعةمجاني / مدفوع

المزايا

تظليل حيّ

التطابقات مُعلَّمة في النصّ العيّنة كلما تغيّر النمط، مع تفصيل عند التحويم.

مجموعات مسمّاة ومرقَّمة

كل التقاط مسرود لكل تطابق، فترى أي مجموعة تحمل ماذا.

كل الرايات الشائعة

العامة وتجاهل الحالة والمتعددة الأسطر وdotall ويونيكود واللاصقة، كلٌّ تُبدَّل مستقلة.

عدد التطابقات ومواضعها

كم إصابة وأين تبدأ، وهذا يهمّ حين تستبدل لا حين تبحث.

أخطاء الصياغة مشروحة

قوس غير متوازن أو هروب رديء يقول ما الخطأ بدل ألّا يطابق شيئاً بصمت.

يتحمّل المدخلات الطويلة

ملفات سجلّ كاملة يمكن لصقها موضوعَ اختبار دون رفع.

بلا تثبيت

بلا محرر ولا بيئة تشغيل ولا اعتماديات — يعمل على صفحة الويب.

جاهز للعربية وRTL

واجهة كاملة بثماني لغات، منها العربية من اليمين إلى اليسار.

آمن افتراضياً

يُقدَّم عبر HTTPS، بلا تتبّع للمحتوى وبلا رفع إلى طرف ثالث.

من يستخدمها

المطوّرون

ضبط نمط على بيانات عيّنة حقيقية قبل وضعه في شفرة.

محلّلو البيانات

بناء نمط استخراج لعمود فوضويّ ورؤية ما يفوته بالضبط.

مديرو الأنظمة

فحص تعبير ترشيح سجلّات على أسطر سجلّ فعلية لا مخترَعة.

كل من يتعلّم التعبيرات النمطية

مشاهدة ما يفعله نمط وأنت تغيّره، وهو أسرع من القراءة عنه.

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

لا. كل شيء يعمل محلياً في متصفحك — نصّك لا يُرفع أو يُخزَّن أو يُشارَك أبداً.

نعم — مجاني تماماً، بلا حساب وبلا حدود.