التعبيرات المنتظمة في JavaScript مع أمثلة لـ Node.js

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعبيرات المنتظمة في JavaScript: دليل شامل مع أمثلة



التعبيرات المنتظمة (regexp أو regex) هي أداة قوية للبحث والاستبدال والتحقق من صحة البيانات النصية. في JavaScript، وخاصة في بيئة Node.js، تُستخدم التعبيرات المنتظمة في كل مكان: من معالجة السجلات وتحليل عناوين URL إلى التحقق من صحة النماذج وتنسيق النص. في هذه المقالة، سنشرح أساسيات العمل مع التعبيرات المنتظمة في JavaScript، ونتناول بناء الجملة والطرق، ونقدم أمثلة عملية لـ Node.js.



إنشاء التعبيرات المنتظمة في JavaScript



في JavaScript، هناك طريقتان لإنشاء تعبير منتظم:



  • الكتابة الحرفية — الطريقة الأكثر ملاءمة وانتشارًا: /pattern/flags.
  • منشئ RegExp — يُستخدم عندما يتم إنشاء النمط ديناميكيًا: new RegExp('pattern', 'flags').


أمثلة:



// الكتابة الحرفيةconst regexLiteral = /hello/i; // العلامة i — تجاهل حالة الأحرف

// منشئ RegExpconst pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');

console.log(regexLiteral.test('Hello, world!')); // trueconsole.log(regexConstructor.test('HELLO')); // true


العلامات الرئيسية (المعدلات)



  • i — تجاهل حالة الأحرف (case-insensitive).
  • g — البحث العام (يبحث عن جميع التطابقات، وليس الأولى فقط).
  • m — الوضع متعدد الأسطر (تعمل المراسي ^ و $ لكل سطر).
  • s — وضع "dotall" (تتضمن النقطة . حرف السطر الجديد ).
  • u — دعم كامل لـ Unicode.
  • y — وضع "sticky" (البحث من الموضع الحالي).


طرق التعبيرات المنتظمة في JavaScript



في JavaScript، تعمل التعبيرات المنتظمة مع عدة طرق للسلاسل النصية و RegExp نفسه.



طريقة test()

تتحقق مما إذا كان هناك تطابق في السلسلة النصية. تُرجع true أو false.



const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailRegex.test('user@example.com')); // trueconsole.log(emailRegex.test('invalid-email'));    // false


طريقة exec()

تُجري بحثًا وتُعيد مصفوفة بالنتائج أو null. مفيدة لاستخراج المجموعات.



const urlRegex = /https?:\\/\\/([^\\/]+)\\/(.*)/;const url = 'https://pythonlib.ru/regular-expressions';const match = urlRegex.exec(url);

if (match) { console.log('النطاق:', match[1]); // pythonlib.ru console.log('المسار:', match[2]); // regular-expressions}


طرق السلاسل النصية التي تعمل مع regexp



  • str.match(regex) — تُعيد مصفوفة من التطابقات (أو null).
  • str.matchAll(regex) — تُعيد مكررًا لجميع التطابقات (مع المجموعات).
  • str.replace(regex, replacement) — تستبدل التطابقات.
  • str.search(regex) — تُعيد فهرس أول تطابق (-1 إذا لم يوجد).
  • str.split(regex) — تقسم السلسلة النصية بناءً على التعبير المنتظم.


const text = 'الكود: 12345، القطعة: ABC-6789';

// match — العثور على جميع الأرقامconst numbers = text.match(/\\d+/g);console.log(numbers); // ['12345', '6789']

// replace — استبدال الشرطة بنقطتينconst cleaned = text.replace(/-/g, ':');console.log(cleaned); // 'الكود: 12345، القطعة: ABC:6789'

// split — التقسيم بناءً على الفواصل والمسافاتconst parts = text.split(/,\\s*/);console.log(parts); // ['الكود: 12345', 'القطعة: ABC-6789']


الأنماط الأساسية والأحرف الخاصة



لإنشاء أنماط دقيقة، تُستخدم الرموز الوصفية والمحددات الكمية. إليك أهمها:



الأحرف الأساسية



المدونات

توصيات الكتب