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 الكامل بالعربي.