التعبيرات المنتظمة في JavaScript مع أمثلة: عمليًا
التعبيرات المنتظمة (RegExp) هي أداة قوية للبحث والاستبدال والتحقق من السلاسل النصية. في JavaScript و Node.js تُستخدم في كل مكان: من التحقق من صحة النماذج إلى تحليل السجلات. في هذه المقالة، سنشرح أساسيات بناء الجملة، والطرق الشائعة، وسنحل عدة مسائل عملية.
1. إنشاء تعبير منتظم
في JavaScript، هناك طريقتان لإنشاء تعبير منتظم:
- الكتابة الحرفية (موصى بها):
/pattern/flags - المنشئ
new RegExp('pattern', 'flags')
مثال:
// الكتابة الحرفيةconst regexLiteral = /hello/i;
// المنشئ (مفيد عندما يكون النمط ديناميكيًا)const pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('HELLO')); // true2. الطرق الأساسية لـ RegExp و String
للعمل مع التعبيرات المنتظمة في JavaScript، يتم استخدام نوعين من الطرق: طرق كائن RegExp نفسه وطرق السلاسل النصية.
2.1 طريقة 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')); // false2.2 طريقة exec()
تبحث عن تطابق وتُعيد مصفوفة بمعلومات مفصلة (أو null). مفيدة لاستخراج البيانات.
const str = 'السعر: 1500 روبل، الخصم: 200 روبل';const priceRegex = /(\\d+)/g;let match;
while ((match = priceRegex.exec(str)) !== null) { console.log(`تم العثور على رقم: ${match[1]}`);}// الإخراج:// تم العثور على رقم: 1500// تم العثور على رقم: 2002.3 طريقة السلسلة النصية match()
تعمل بشكل مشابه لـ exec()، ولكن تُستدعى من السلسلة النصية.
const text = 'JavaScript رائع! JS يُستخدم في كل مكان.';const result = text.match(/JS/g);console.log(result); // [ 'JS', 'JS' ]2.4 طريقة السلسلة النصية replace()
تستبدل التطابقات التي تم العثور عليها بسلسلة نصية محددة أو نتيجة دالة.
const phone = '+7 (123) 456-78-90';const cleaned = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleaned); // 71234567890
// الاستبدال باستخدام مجموعات الالتقاطconst date = '2024-03-15';const formatted = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formatted); // 15.03.20242.5 طريقة السلسلة النصية search()
تُعيد فهرس أول تطابق أو -1.
const sentence = 'تعلم JavaScript على PythonLib';const index = sentence.search(/javascript/i);console.log(index); // 63. الأعلام والرموز الخاصة: أمثلة عملية
الأعلام تغير سلوك البحث. الأكثر شيوعًا:
g— بحث عام (يبحث عن جميع التطابقات، وليس الأولى فقط).i— بحث غير حساس لحالة الأحرف.m— وضع متعدد الأسطر (تعمل المراسي^و$على كل سطر).
مثال مع العلم m:
const multiLineText = `السطر الأولالسطر الثانيالسطر الثالث`;
// بدون العلم mconsole.log(multiLineText.match(/^السطر الثاني/)); // null
// مع العلم mconsole.log(multiLineText.match(/^السطر الثاني/m)); // [ 'السطر الثاني' ]الرموز الخاصة الأساسية
| الرمز | الوصف |
|---|