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

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

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

ابدأ الدورة

مقدمة إلى التعبيرات النمطية في TypeScript



التعبيرات النمطية (regex) هي أداة قوية للبحث والاستبدال والتحقق من صحة السلاسل النصية. في TypeScript، كما في JavaScript، يتم تنفيذها من خلال الكائن المدمج RegExp. ومع ذلك، يضيف TypeScript كتابة صارمة، مما يجعل العمل مع التعبيرات النمطية أكثر أمانًا وقابلية للتنبؤ. في هذه المقالة، سنشرح بناء الجملة، والطرق، والكتابة، والأمثلة العملية لاستخدام التعبيرات النمطية في TypeScript.



ما هي التعبيرة النمطية؟

التعبيرة النمطية هي سلسلة من الأحرف تحدد نمط بحث. في TypeScript، يتم إنشاء التعبيرات النمطية بطريقتين:

  • بناء الجملة الحرفي: const regex: RegExp = /\\d+/g;
  • منشئ RegExp: const regex: RegExp = new RegExp('\\\\d+', 'g');

الطريقة الثانية مفيدة عندما يتم تشكيل النمط ديناميكيًا من المتغيرات.



الطرق الأساسية للعمل مع التعبيرات النمطية في TypeScript



1. طريقة test() — التحقق من وجود تطابق

تعيد طريقة test() قيمة boolean — هل يوجد تطابق في السلسلة النصية.

const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;const email: string = 'user@example.com';

if (emailRegex.test(email)) { console.log('البريد الإلكتروني صحيح');} else { console.log('البريد الإلكتروني غير صحيح');}// الإخراج: البريد الإلكتروني صحيح


2. طريقة exec() — الحصول على تفاصيل التطابق

تعيد طريقة exec() كائنًا من النوع RegExpExecArray | null. يحتوي على التطابق، ومجموعات الالتقاط، والموضع في السلسلة النصية.

const dateRegex: RegExp = /(\\d{2})\\.(\\d{2})\\.(\\d{4})/;const dateString: string = 'التاريخ: 15.03.2023';const match: RegExpExecArray | null = dateRegex.exec(dateString);

if (match) { console.log(`اليوم: ${match[1]}, الشهر: ${match[2]}, السنة: ${match[3]}`); // الإخراج: اليوم: 15, الشهر: 03, السنة: 2023}


3. طريقة match() — البحث عن جميع التطابقات في السلسلة النصية

طريقة السلسلة النصية match() تأخذ تعبيرًا نمطيًا وتعيد مصفوفة من التطابقات أو null.

const text: string = 'القطط والهريرات هي الأفضل!';const catRegex: RegExp = /ق[طط]ط?/gi;const matches: RegExpMatchArray | null = text.match(catRegex);

if (matches) { console.log(matches); // ['القطط', 'الهريرات']}


4. طريقة replace() — الاستبدال وفقًا للنمط

طريقة replace() تستبدل التطابقات بسلسلة نصية محددة أو نتيجة دالة.

const phone: string = '+7 (123) 456-78-90';const cleanPhone: string = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleanPhone); // 71234567890

// الاستبدال باستخدام مجموعات الالتقاطconst name: string = 'إيفانوف إيفان';const reversed: string = name.replace(/(\\w+)\\s(\\w+)/, '$2 $1');console.log(reversed); // إيفان إيفانوف


5. طريقة split() — تقسيم السلسلة النصية

يمكن استخدام التعبيرة النمطية لتقسيم سلسلة نصية إلى أجزاء.

const data: string = 'تفاحة;كمثرى,برتقال:موز';const fruits: string[] = data.split(/[;,.:]/);console.log(fruits); // ['تفاحة', 'كمثرى', 'برتقال', 'موز']


كتابة التعبيرات النمطية في TypeScript



يحدد TypeScript تلقائيًا نوع المتغير على أنه RegExp عند استخدام بناء الجملة الحرفي. ومع ذلك، في المشاريع المعقدة، قد يكون من الضروري إضافة تعليق نوع صريح:

// تحديد النوع بشكل صريحconst hexColor: RegExp = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;

// كتابة دالة تعيد RegExpfunction createUrlRegex(baseUrl: string): RegExp { return new RegExp(`^${baseUrl}/[a-z]+$`, 'i');}

const myRegex: RegExp = createUrlRegex('https://example.com');console.log(myRegex.test('ht

المدونات

توصيات الكتب