🚀 إتقان أحرف الميتا في التعبيرات النمطية (RegExp) في جافا سكريبت

مرحباً بك في درس جديد من سلسلة التعبيرات النمطية! في الدرس السابق، تعلمنا أساسيات إنشاء التعبيرات النمطية. اليوم سنتعمق أكثر ونتعرف على أحرف الميتا (Meta Characters) - وهي الرموز الخاصة التي تمنح التعبيرات النمطية قوتها الحقيقية في البحث والتحقق من النصوص.


🔍 ما هي أحرف الميتا (Meta Characters)؟

أحرف الميتا هي رموز خاصة لها معنى محدد في التعبيرات النمطية. بدلاً من البحث عن الحرف نفسه، تخبر التعبير النمطي "كيف" يبحث أو "عن ماذا" يبحث. فكر فيها كأدوات ذكية تساعدك في صياغة أنماط بحث دقيقة.

الأحرف الأساسية لأحرف الميتا التي سنتعلمها اليوم:

  • . (النقطة)
  • ^ (علامة اليقظة)
  • $ (علامة الدولار)
  • [] (مجموعات الأحرف)
  • | (أو)

⚫ النقطة (.) - تطابق أي حرف واحد

النقطة هي أبسط أحرف الميتا وأكثرها استخداماً. هي تطابق أي حرف واحد عدا حرف السطر الجديد (\n).

مثال عملي:

// لنبحث عن نمط "c.t"
let pattern = /c.t/;
let text1 = "cat";    // تطابق ✓ (a تطابق النقطة)
let text2 = "cot";    // تطابق ✓ (o تطابق النقطة)
let text3 = "cut";    // تطابق ✓ (u تطابق النقطة)
let text4 = "ct";     // لا تطابق ✗ (يجب أن يكون هناك حرف بين c و t)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text4)); // false

💡 ملاحظة: النقطة تطابق مسافة، رقم، حرف خاص، أو أي شيء آخر عدا سطر جديد.


🔝 علامة اليقظة (^) - بداية النص

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

مثال عملي:

// لنبحث عن كلمة تبدأ بـ "Hello"
let pattern = /^Hello/;
let text1 = "Hello World";    // تطابق ✓ (تبدأ بـ Hello)
let text2 = "Say Hello";      // لا تطابق ✗ (لا تبدأ بـ Hello)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text2)); // false

🔚 علامة الدولار ($) - نهاية النص

علامة $ هي عكس علامة اليقظة - تستخدم للتأكد من أن النمط يظهر في نهاية النص أو السطر.

مثال عملي:

// لنبحث عن كلمة تنتهي بـ "World"
let pattern = /World$/;
let text1 = "Hello World";    // تطابق ✓ (تنتهي بـ World)
let text2 = "World Hello";    // لا تطابق ✗ (لا تنتهي بـ World)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text2)); // false

🔄 الجمع بين ^ و $ - تطابق كامل النص

عندما نستخدم ^ و $ معاً، نطلب من التعبير النمطي أن يطابق النص بالكامل تماماً.

مثال عملي:

// لنبحث عن نص هو بالضبط "JavaScript"
let pattern = /^JavaScript$/;
let text1 = "JavaScript";     // تطابق ✓ (النص كامل مطابق)
let text2 = "I love JavaScript"; // لا تطابق ✗ (هناك كلمات أخرى)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text2)); // false

🎯 مجموعات الأحرف ([]) - تطابق خيارات محددة

الأقواس المربعة [] تسمح لنا بتحديد مجموعة من الأحرف، حيث يطابق التعبير النمطي أي حرف واحد من هذه المجموعة.

مثال عملي:

// لنبحث عن كلمات تحتوي على حرف متحرك (a, e, i, o, u)
let pattern = /[aeiou]/;
let text1 = "cat";    // تطابق ✓ (تحتوي على a)
let text2 = "sky";    // تطابق ✓ (تحتوي على y - نعم، y تعتبر متحركة أحياناً!)
let text3 = "rhythm"; // لا تطابق ✗ (لا تحتوي على أي حرف متحرك)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text3)); // false

نطاقات الأحرف: يمكننا استخدام الشرطة - لإنشاء نطاقات:

// تطابق أي رقم من 0 إلى 9
let digitsPattern = /[0-9]/;

// تطابق أي حرف صغير من a إلى z
let lettersPattern = /[a-z]/;

// تطابق أي حرف كبير من A إلى Z
let capitalPattern = /[A-Z]/;

🔀 الرمز | (أو) - خيارات متعددة

الرمز | يعني "أو" في التعبيرات النمطية، ويسمح لنا بتحديد عدة خيارات للنمط.

مثال عملي:

// لنبحث عن كلمة "cat" أو "dog"
let pattern = /cat|dog/;
let text1 = "I have a cat";   // تطابق ✓ (تحتوي على cat)
let text2 = "I have a dog";   // تطابق ✓ (تحتوي على dog)
let text3 = "I have a bird";  // لا تطابق ✗ (لا تحتوي على cat أو dog)

console.log(pattern.test(text1)); // true
console.log(pattern.test(text3)); // false

🧪 أمثلة عملية مجمعة

لنجمع ما تعلمناه في أمثلة عملية مفيدة:

// التحقق من أن النص يبدأ بحرف كبير
let startsWithCapital = /^[A-Z]/;
console.log(startsWithCapital.test("Hello")); // true
console.log(startsWithCapital.test("hello")); // false

// البحث عن ألوان أساسية
let colors = /red|blue|green/;
console.log(colors.test("The sky is blue")); // true
console.log(colors.test("The apple is red")); // true

// البحث عن نمط مكون من 3 أحرف يبدأ بـ "b" وينتهي بـ "t"
let threeLetterPattern = /b.t/;
console.log(threeLetterPattern.test("bat")); // true
console.log(threeLetterPattern.test("boat")); // false (أكثر من حرف بين b و t)

💡 نصائح عملية

  1. تذكر الهروب (Escape): إذا أردت البحث عن حرف ميتا نفسه (مثل . أو $)، يجب استخدام \ قبله، مثل \. للبحث عن النقطة الحرفية.
  2. ابدأ بسيطاً: لا تحاول كتابة تعبيرات نمطية معقدة من البداية. ابدأ بالبسيط واختبره جيداً.
  3. استخدم الأدوات المساعدة: مواقع مثل regex101.com تساعدك في اختبار وتصحيح تعبيراتك النمطية.

🎯 خلاصة الدرس

تعلمنا اليوم أهم أحرف الميتا في التعبيرات النمطية:

  • النقطة (.) تطابق أي حرف واحد
  • ^ للتأكد من بداية النص
  • $ للتأكد من نهاية النص
  • [] لمجموعات الأحرف
  • | لخيارات "أو"

هذه الأدوات الأساسية تمنحك قدرة كبيرة على البحث والتحقق من النصوص بأنماط مرنة.