تخطَّ إلى المحتوى

matchAll()

كل تطابقات تعبير نمطي مع مجموعاته matchAll()

matchAll() تُرجع كل تطابقات تعبير نمطي بالنص، مع الوصول الكامل لكل مجموعة أسر (capturing group) بكل تطابق — بعكس match() التي تفقد المجموعات مع علامة g.

match() مع علامة g تُرجع فقط النصوص المطابقة كاملة وتفقد أي مجموعات أسر بداخلها. matchAll() تحل هذه المشكلة: تُرجع مُكرِّرًا (iterator) بكل تطابق ككائن كامل يحوي المجموعات والفهرس. يجب أن يحمل التعبير النمطي علامة g وإلا تُرمى TypeError.

الصياغة

const iterator = str.matchAll(/pattern/g);
const allMatches = [...str.matchAll(/pattern/g)]; // لتحويلها لمصفوفة

⚡ جرّب بنفسك

عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.

⚡ محرّر تفاعلي
const text = "السعر: 50 دولار، الخصم: 10 دولار";
const matches = [...text.matchAll(/(\d+)\s*دولار/g)];

matches.forEach(m => console.log(m[0], "←", m[1])); // النص الكامل ← الرقم فقط
وحدة التحكّم
اضغط «تشغيل» لرؤية النتيجة هنا.

أهم المعاملات

المعاملالوظيفة
patternتعبير نمطي يجب أن يحمل علامة g (global) وإلا يُرمى TypeError

💡 نصائح عملية

  • لفّها دائمًا بعامل الانتشار [...str.matchAll(...)] لتحويل النتيجة لمصفوفة عادية تقدر تمرّ عليها بـ map/forEach

⚠️ أخطاء شائعة

  • نسيان علامة g على التعبير النمطي — يرمي TypeError فورًا
  • استخدام match() بدلها عند الحاجة لمجموعات الأسر مع تطابقات متعددة — match() تفقدها مع g

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVASCRIPT الكامل بالعربي.