🔍
أدوات المطورين
March 18, 20269 min readBy BrowseryTools Team

شرح Regular Expressions بالعربي: دليل المبتدئين

دليل شامل للمبتدئين يشرح التعابير النمطية (Regular Expressions) من الصفر مع أمثلة عملية للتحقق من البريد الإلكتروني والهاتف وغيرها.

regexregular-expressionsتعابير-نمطيةمطورينjavascriptpython

التعابير النمطية (Regular Expressions) هي واحدة من أقوى الأدوات في ترسانة أي مطور، وفي نفس الوقت واحدة من أكثر الأشياء التي يتجنبها المبتدئون بسبب مظهرها المخيف. سطر مثل ^[\w.-]+@[\w.-]+\.\w{2,}$ يبدو كطلاسم لمن لم يدرسها، لكن بمجرد أن تفهم المنطق وراءها، ستجد نفسك تستخدمها بشكل طبيعي في العمل اليومي.

هذا الدليل مصمم للمبتدئين. سنبدأ من الصفر ونبني المفاهيم تدريجياً، مع أمثلة عملية يمكنك اختبارها فوراً في أداة Regex Tester — مجانية تماماً، بدون تسجيل، وتعمل بالكامل في متصفحك.

ما هي Regular Expressions ولماذا تحتاجها؟

التعبير النمطي هو نمط (pattern) يصف مجموعة من النصوص. عند تطبيقه على نص معين، يمكنه:

  • التحقق (Validation) — هل هذا النص يطابق النمط؟ (مثال: هل هذا بريد إلكتروني صالح؟)
  • البحث (Search) — أوجد كل الأجزاء التي تطابق النمط في هذا النص.
  • الاستخراج (Extract) — احصل على الأجزاء المطابقة كنتيجة.
  • الاستبدال (Replace) — استبدل كل تطابق بنص آخر.

Regex متاح في كل لغة برمجة رئيسية: JavaScript، Python، PHP، Java، Ruby، Go، وحتى في محررات النصوص مثل VS Code. تعلمه مرة واحدة يخدمك في كل بيئة.

الرموز الأساسية: البناء اللبنة

الأحرف الحرفية (Literal Characters)

أبسط regex هو كلمة عادية. النمط hello يطابق أي نص يحتوي على "hello". لا تعقيد هنا.

النقطة . (أي حرف)

النقطة تطابق أي حرف واحد ما عدا السطر الجديد:

Pattern: c.t
Matches: "cat", "cot", "cut", "c3t", "c_t"
No match: "ct" (nothing between c and t)

المحددات الكمية (Quantifiers): * + ? {}

  • * — صفر مرات أو أكثر
  • + — مرة واحدة أو أكثر
  • ? — صفر أو مرة واحدة (يجعل العنصر اختيارياً)
  • {3} — عدد محدد بالضبط (3 مرات)
  • {2,5} — بين عددين (من 2 إلى 5 مرات)
Pattern: colou?r
Matches: "color" and "colour"
(the 'u' is optional with ?)

المرساة (Anchors): ^ و $

المراسي تحدد موقع التطابق في النص:

  • ^ — بداية النص أو السطر
  • $ — نهاية النص أو السطر
Pattern: ^hello$
Matches: "hello" (exactly, nothing before or after)
No match: "say hello" or "hello world"

مجموعات الأحرف (Character Classes): []

الأقواس المربعة تحدد مجموعة من الأحرف المقبولة في موقع واحد:

[aeiou]    → أي حرف علة
[0-9]      → أي رقم من 0 إلى 9
[a-z]      → أي حرف إنجليزي صغير
[A-Za-z]   → أي حرف إنجليزي
[^0-9]     → أي شيء ليس رقماً (^ داخل [] يعني النفي)

الاختصارات الشائعة

  • \d — أي رقم (مكافئ لـ [0-9])
  • \w — أي حرف كلمة: حروف، أرقام، أو underscore
  • \s — أي مسافة بيضاء: space، tab، أو newline
  • \D، \W، \S — عكس ما سبق (حرف كبير = نفي)

أمثلة عملية من الحياة الواقعية

التحقق من البريد الإلكتروني

Pattern: ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$

Test: "user@example.com"  → ✓ match
Test: "user@.com"         → ✗ no match
Test: "user.name@co.uk"   → ✓ match

التحقق من رقم الهاتف (دولي)

Pattern: ^\+?[1-9]\d{7,14}$

Matches: "+971501234567", "00971501234567"
No match: "abc", "123" (too short)

استخراج الروابط من نص

Pattern: https?://[\w./%-]+

Extracts all URLs from any text block

Regex في JavaScript وPython

// JavaScript
const emailRegex = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test("user@example.com"); // true

const text = "Contact us at info@site.com or help@app.io";
const emails = text.match(/[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}/g);
// ["info@site.com", "help@app.io"]

# Python
import re
pattern = r"^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$"
bool(re.match(pattern, "user@example.com"))  # True

emails = re.findall(r"[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}", text)

أخطاء شائعة للمبتدئين

  • نسيان الـ escape — أحرف مثل . و* و+ لها معنى خاص. إذا أردت تطابق النقطة الحرفية، استخدم \.
  • Greedy بدلاً من Lazy — افتراضياً .* يأكل أكبر قدر ممكن. استخدم .*? للحصول على أقل تطابق ممكن.
  • نسيان الـ flags — بدون flag g في JavaScript، تحصل فقط على أول تطابق. بدون i، الحروف الكبيرة والصغيرة مختلفة.
  • Catastrophic Backtracking — بعض أنماط Regex يمكن أن تتسبب في بطء شديد جداً مع نصوص معينة. اختبر دائماً مع نصوص حافة قبل النشر.

كيف تختبر Regex بأمان في المتصفح

الطريقة الأسرع لتعلم Regex وتصحيح أخطائها هي رؤية النتائج الفورية. افتح أداة Regex Tester، اكتب النمط في الحقل الأول، والنص التجريبي في الحقل الثاني، وسترى التطابقات مُظللة بشكل فوري مع كل تعديل. هذا النهج يسرع التعلم بشكل كبير — بدلاً من تشغيل سكريبت في Terminal مرات عديدة، تحصل على تغذية راجعة لحظية تساعدك على فهم سلوك النمط بدقة.


🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →