محول مجاني

اختبار التعبيرات النظامية

اختبر وتصحح التعبيرات النظامية فوراً في متصفحك. أضئ التطابقات، وشاهد مجموعات الالتقاط، واستخدم وضع الاستبدال — مجانًا وبخصوصية تامة.

//g
الأعلام:

حول هذه الأداة

التعبيرات العادية هي لغة خاصة بالمجال لمطابقة الأنماط في النص. لقد كانت جزءًا من الحوسبة منذ عام 1968 وهي الآن مدمجة في كل لغة برمجة حديثة ومحرر نصوص وأداة بحث في سطر الأوامر. إن بناء الجملة موجز ولكنه عرضة للأخطاء: فالتغييرات الصغيرة تنتج سلوك مطابقة مختلفًا بمهارة، وتصبح التعبيرات المعقدة غير قابلة للقراءة بسرعة. إن أداة الاختبار التي تعرض التطابقات في الوقت الفعلي أثناء قيامك بتحرير النمط هي الطريقة الأكثر فعالية لتطوير التعبير العادي والتحقق منه.

يعمل هذا الاختبار في متصفحك باستخدام محرك JavaScript regex (نفس المحرك الذي يستخدمه تطبيقك إذا كان يعمل في متصفح). يتم تحديث الأنماط ونص الاختبار بشكل تفاعلي: كل تغيير لأي منهما يعيد تشغيل المطابقة. يتم تمييز مجموعات المطابقة، ويتم إدراج المجموعات التي تم التقاطها، ويتم عرض العلامات (حساسة لحالة الأحرف، ومتعددة الأسطر، وعامة) للاختبار.

يختلف بناء جملة Regex بمهارة بين المحركات. تتبع JavaScript مواصفات ECMAScript؛ لكل من Python وPCRE (التي تستخدمها PHP وغيرها الكثير) وJava وGo لهجاتهم الخاصة مع ميزات متداخلة ولكنها ليست متطابقة. الأنماط التي تم تطويرها هنا تستخدم بناء جملة ECMAScript؛ تتطلب إمكانية النقل عبر المحركات التحقق من وثائق كل هدف.

لماذا استخدام اختبار Regex

من المعروف أن أخطاء Regex يصعب تصحيحها بعد النشر. قد يتطابق النمط الذي يبدو معقولاً أكثر أو أقل مما هو مقصود، أو يفشل في الحالات المتطورة، أو يكون له تراجع كارثي في ​​بعض المدخلات. أنماط الاختبار بشكل تفاعلي مقابل المدخلات التمثيلية تكتشف المشكلات قبل مراجعة التعليمات البرمجية وإنتاجها.

تستفيد الأنماط أيضًا من التوثيق. إن عرض التعبير العادي جنبًا إلى جنب مع الإدخال الذي يجب أن يطابقه والإدخال الذي لا يجب أن يتطابق معه يجعل النية واضحة. يقدر المشرفون المستقبليون (بما في ذلك أنت بعد ستة أشهر) حالات الاختبار الموثقة أكثر من تقديرهم للسطور الفردية الذكية.

كيفية الاستخدام

اكتب نمطًا، واكتب إدخال الاختبار، وشاهد التطابقات المميزة مباشرة.

  1. أدخل النمط الخاص بك: اكتب نمط regex في حقل النمط. يعمل كل من التعبير العادي الحرفي (/pattern/flags) ونماذج النمط فقط؛ يمكن تعيين الأعلام عبر إدخال الأعلام.
  2. إضافة مدخلات الاختبار: قم بلصق نموذج النص الذي يجب أن يطابقه النمط (ومن الأفضل أيضًا أن لا يتطابق مع النص). يقوم المُختبر بتشغيل النموذج مقابل الإدخال ويسلط الضوء على التطابقات.
  3. وضع الأعلام: العلامات الشائعة: g (عالمي، ابحث عن جميع التطابقات)، i (غير حساس لحالة الأحرف)، m (متعدد الأسطر، ^ و $ يبدأ/ينتهي سطر المطابقة)، s (dotall، . يطابق الأسطر الجديدة)، u (Unicode).
  4. فحص النتائج: يتم تمييز كل مباراة في الإدخال. تظهر مجموعات الالتقاط في قائمة تحتوي على فهرس المجموعة وقيمتها. يُظهر المُختبر أيضًا عدد التطابقات وأي أخطاء في التجميع في النموذج.

حالات الاستخدام الشائعة

التفاصيل الفنية

يتبع JavaScript regex مواصفات ECMAScript. الميزات الرئيسية: فئات الأحرف ([abc]، [^abc])، ومحددات الكمية (*، +، ?، {n,m})، والتناوب (|)، والتجميع ((...))، ومجموعات الالتقاط وغير الالتقاط، والنظر الأمامي والخلفي (المحركات الحديثة)، والمراجع الخلفية، والمجموعات المسماة، وهروب خاصية Unicode (مع علامة u)، والمجموعة القياسية لتسلسلات الهروب.

اختلافات مهمة عن PCRE وPython: دعم lookbehind حديث في JavaScript (2018+)؛ تستخدم المجموعات المسماة بناء الجملة (؟<name>...)؛ تتطلب بعض عمليات الهروب من Unicode وضع علامة u للعمل بشكل صحيح. يجب التحقق من الأنماط المخصصة للاستخدام عبر اللغات مقابل وثائق كل هدف.

الأداء: يمكن أن يكون لمحركات regex المستندة إلى التراجع (معظمها بما في ذلك JavaScript) تراجع كارثي في بعض الأنماط المرضية. تعتبر الاختبارات التي تعلق جهاز الاختبار علامة على أن النمط يحتاج إلى التبسيط - عادة عن طريق تجنب محددات الكمية المتداخلة والتناوب الغامض.

أفضل الممارسات

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

ما هي نكهة التعبير العادي التي تدعمها هذه الأداة؟
ويستخدم محرك RegExp المدمج في JavaScript، والذي يدعم بناء الجملة القياسي بما في ذلك lookaheads، و lookbehinds (في المتصفحات الحديثة)، ومجموعات الالتقاط المسماة، وهروب خاصية Unicode.
هل يمكنني اختبار بدائل regex؟
نعم. قم بالتبديل إلى وضع الاستبدال لإدخال نمط الاستبدال. يمكنك استخدام $1، $2، وما إلى ذلك للحصول على مراجع خلفية لمجموعة الالتقاط، و$<name> للمجموعات المسماة.
لماذا يتطابق التعبير العادي الخاص بي بشكل مختلف هنا عن Python/PHP؟
تحتوي لغات البرمجة المختلفة على محركات regex مختلفة قليلاً. لا تدعم JavaScript محددات الكمية أو بعض الميزات الخاصة بـ PCRE. بناء الجملة الأساسي (فئات الأحرف، ومحددات الكمية، والمجموعات) هو نفسه عبر اللغات.
هل تقوم الأداة بحفظ أنماط التعبير العادي الخاصة بي؟
لا، لا يتم حفظ أو نقل أي شيء. تعمل الأداة بالكامل في متصفحك. يمكنك وضع إشارة مرجعية على الأنماط أو مشاركتها عن طريق نسخ سلسلة regex.
كيف يمكنني مطابقة حرف خاص حرفيًا؟
الهروب منه مع شرطة مائلة للخلف. لمطابقة نقطة حرفية: \. لمطابقة شرطة مائلة عكسية حرفية: \\. داخل فئات الأحرف [...]، تفقد معظم الأحرف الخاصة معناها.
هل جهاز الاختبار يعمل على الخادم؟
لا، يتم تجميع الأنماط ومطابقتها في متصفحك باستخدام كائن RegExp الأصلي.
هل يمكنني اختبار الأنماط لمحركات غير JavaScript؟
في الغالب. بالنسبة للأنماط البسيطة، تتفق المحركات الرئيسية. بالنسبة للميزات المتقدمة (النظر إلى الخلف، والمجموعات الذرية، ومحددات الكمية، وهروب خاصية Unicode)، تأكد من وثائق المحرك المستهدف.
هل يتعامل مع مدخلات كبيرة جدًا؟
ما يصل إلى بضعة ميغابايت يعمل بسلاسة. قد تؤدي المدخلات الأكبر حجمًا إلى إبطاء المتصفح أو تعليقه، خاصة مع الأنماط المعرضة للتراجع.