webtrajans
ar

التعابير النمطية (Regex): مرجع سريع مع أمثلة جاهزة للاستخدام

التعبير النمطي سطر قصير يصف شكل النص الذي تبحث عنه: بريد، رقم جوال، تاريخ. هنا الرموز الأساسية، وأمثلة مجربة، والفخاخ التي يقع فيها الجميع، بما فيها النص العربي.

آخر تحديث: قراءة 5 دقائق

التعابير النمطية (Regular Expressions أو Regex) أداة قوية لمعالجة النصوص: البحث عن كل أرقام الجوال في ملف، والتحقق من صيغة رقم الهوية في نموذج، واستبدال التواريخ من صيغة إلى أخرى. شكلها مخيف للوهلة الأولى، لكنها تُبنى من قطع صغيرة قليلة. هذا الدليل مرجع سريع مع أمثلة جاهزة، مكتوبة بصيغة JavaScript، وتعمل غالبًا في Python وPHP وغيرها مع فروق بسيطة.

الرموز الأساسية

الرمز المعنى مثال يطابق
. أي حرف عدا السطر الجديد a.c abc، a1c
\d رقم 0–9 \d\d 42
\w حرف لاتيني أو رقم أو _ \w+ user_1
\s مسافة بيضاء (مسافة، tab، سطر) a\sb a b
\D \W \S عكس ما سبق \D+ abc
[abc] أحد هذه الحروف [aeiou] e
[^abc] أي حرف عدا هذه [^0-9] x
[a-z] نطاق [A-F0-9] B، 7
^ بداية النص (أو السطر مع m) ^Hi Hi في البداية
$ نهاية النص end$ end في النهاية
\b حد كلمة (لاتيني) \bcat\b cat لا category
| أو jpg|png jpg أو png
\ هروب لرمز خاص \. نقطة حرفية

المحددات الكمية

الرمز المعنى
* صفر مرة أو أكثر
+ مرة أو أكثر
? صفر أو مرة (اختياري)
{3} 3 مرات بالضبط
{2,5} من 2 إلى 5
{2,} 2 فأكثر

المجموعات

الصيغة الاستخدام
(abc) مجموعة ملتقطة، تُستخدم لاحقًا بـ $1 أو \1
(?:abc) مجموعة غير ملتقطة (للتجميع فقط)
(?<year>\d{4}) مجموعة مسماة
(?=abc) نظرة للأمام (يتبعه abc)
(?!abc) نظرة للأمام سالبة
(?<=abc) نظرة للخلف

الأعلام (Flags)

العلم المعنى
g كل التطابقات لا الأول فقط
i تجاهل حالة الأحرف اللاتينية
m ^ و$ لكل سطر
s النقطة تطابق السطر الجديد أيضًا
u دعم Unicode كامل (ضروري للعربية والإيموجي)

أمثلة جاهزة

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

^[^\s@]+@[^\s@]+\.[^\s@]{2,}$

يكفي لرفض الأخطاء الواضحة. لا تحاول تغطية كل حالات المعيار؛ أرسل رسالة تأكيد.

رقم جوال سعودي

^(?:\+966|00966|0)?5\d{8}$

يطابق 0501234567 و+966501234567 و501234567.

رقم جوال إماراتي

^(?:\+971|00971|0)?5[0-9]\d{7}$

يطابق 0501234567 و+971501234567.

رقم جوال مصري

^(?:\+20|0020|0)?1[0125]\d{8}$

يطابق 01012345678 و+201112345678.

تاريخ بصيغة YYYY-MM-DD

^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

يتحقق من الشكل لا من صحة التاريخ (يقبل 2026-02-31). تحقق من الصحة في الكود.

تحويل DD/MM/YYYY إلى YYYY-MM-DD

'08/10/2026'.replace(/^(\d{2})\/(\d{2})\/(\d{4})$/, '$3-$2-$1'); // 2026-10-08

آيبان سعودي (الشكل فقط)

^SA\d{22}$

للتحقق الكامل من رقمي التحقق راجع دليل رقم الآيبان.

أنماط إضافية شائعة

الغرض النمط
رقم هوية أو إقامة سعودي (10 أرقام يبدأ بـ 1 أو 2) ^[12]\d{9}$
رمز بريدي سعودي (5 أرقام) ^\d{5}$
رقم قومي مصري (14 رقمًا يبدأ بـ 2 أو 3) ^[23]\d{13}$
مسافات متكررة ← مسافة واحدة البحث \s{2,} والاستبدال بمسافة
إزالة وسوم HTML بسيطة <[^>]+>
رابط يبدأ بـ http أو https ^https?://[^\s]+$

هذه أنماط للشكل فقط؛ أرقام الهوية لها خانات تحقق وقواعد لا يكشفها Regex.

النص العربي في Regex

نطاق الحروف العربية

[؀-ۿ]+

يطابق الحروف العربية الأساسية وعلامات الترقيم والأرقام الهندية (٠–٩). لنطاقات إضافية (الأشكال التقديمية) أضف ﭐ-﷿ﹰ-.

خاصية Unicode (أدق)

/\p{Script=Arabic}+/u

فخاخ عربية

  • \w لا يطابق العربية في JavaScript. “مرحبا”.match(/\w+/) تعيد null.
  • \b لا يعمل مع الكلمات العربية في JavaScript لأنه مبني على \w. استخدم (?<![\p{L}]) و(?![\p{L}]) مع العلم u.
  • التشكيل: “مُحَمَّد” لا يطابق “محمد”. احذف التشكيل أولًا: text.replace(/[ً-ْ]/g, '').
  • أشكال الألف والياء والتاء المربوطة: “أحمد” و“احمد” مختلفان. وحّد قبل البحث: [أإآا]، [يى]، [ةه].
  • الأرقام العربية الهندية (٠١٢) لا يطابقها \d في JavaScript. استخدم [0-9٠-٩].
  • التطويل (ـ) في “محـــمد” يحتاج إزالة: ـ.

توحيد النص العربي قبل البحث

const normalize = (s) => s
  .replace(/[\u064B-\u0652\u0640]/g, '')  // التشكيل والتطويل
  .replace(/[أإآ]/g, 'ا')
  .replace(/ى/g, 'ي')
  .replace(/ة/g, 'ه');

طبّق الدالة على النص وعلى كلمة البحث معًا، فيطابق البحث عن “احمد” كلمة “أَحْمَد”.

الجشع مقابل الكسل

const html = '<b>أ</b> و <b>ب</b>';
html.match(/<b>.*<\/b>/)[0];   // '<b>أ</b> و <b>ب</b>'  (جشع)
html.match(/<b>.*?<\/b>/)[0];  // '<b>أ</b>'             (كسول)

أضف ? بعد المحدد الكمي ليصبح كسولًا: *?، +?، {2,5}?.

فخاخ شائعة

  1. نسيان ^ و$ في التحقق: \d{4} يطابق “12345” لأنه يجد 4 أرقام داخلها.
  2. عدم هروب النقطة: example.com يطابق “exampleXcom”. استخدم example\.com.
  3. التراجع الكارثي (Catastrophic backtracking): أنماط مثل (a+)+$ قد تجمّد البرنامج على نصوص معينة. تجنب المحددات المتداخلة على النمط نفسه.
  4. تحليل HTML بـ Regex: مقبول للمهام البسيطة، لكن استخدم محللًا حقيقيًا للصفحات الكاملة.
  5. نسيان العلم g عند الاستبدال، فيُستبدل أول تطابق فقط.
  6. الفروق بين اللغات: النظرة للخلف مدعومة في JavaScript الحديث وPython، لكن ليس في كل البيئات.

كيف تكتب وتختبر نمطًا؟

  1. ابدأ بأمثلة حقيقية: نصوص يجب أن تُطابق وأخرى يجب أن تُرفض.
  2. اكتب أبسط نمط يطابق المثال الأول.
  3. أضف الحالات واحدة واحدة.
  4. اختبر الحالات السلبية.

أداة اختبار Regex تبرز التطابقات والمجموعات لحظيًا وتدعم الأعلام. وإذا كنت تستخرج قيمًا من ملفات JSON، فتحقق من صحتها أولًا في منسق JSON وراجع دليل أساسيات JSON.

الأسئلة الشائعة

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

لغة صغيرة لوصف أنماط النصوص، تُستخدم للبحث والاستبدال والتحقق من المدخلات في معظم لغات البرمجة والمحررات. مثلًا ^\d{4}$ يطابق أي نص مكون من 4 أرقام بالضبط.

كيف أطابق النص العربي في Regex؟

استخدم نطاق Unicode للحروف العربية مثل [\u0600-\u06FF]، أو خاصية \p{Script=Arabic} مع العلم u في JavaScript. لاحظ أن \w لا يطابق الحروف العربية في JavaScript افتراضيًا.

ما الفرق بين .* و.*?

الأول جشع (Greedy) يأخذ أطول تطابق ممكن، والثاني كسول (Lazy) يأخذ أقصر تطابق. في النص <b>أ</b><b>ب</b> يطابق <b>.*</b> السطر كله، بينما <b>.*?</b> يطابق <b>أ</b> فقط.

هل أتحقق من البريد الإلكتروني بـ Regex؟

للتحقق المبدئي من الشكل فقط. نمط بسيط يكفي لمعظم الحالات، والتحقق الحقيقي هو إرسال رسالة تأكيد، لأن النمط الكامل للمعيار معقد جدًا.

أدلة ذات صلة

Base64 وترميز الروابط: كيف يعملان ومتى تستخدم كلًّا منهما؟الرابط العربي الذي يتحول إلى سلسلة %D8%A7… عند نسخه، والصورة المضمّنة في البريد كنص طويل غريب؛ كلاهما ترميز لا تشفير. هنا الفرق بينهما، وطريقة العمل، والأخطاء الشائعة.مؤشر كتلة الجسم (BMI): ماذا يقول رقمك وما الذي لا يقوله؟مؤشر كتلة الجسم رقم سريع يربط الوزن بالطول، ويستخدمه الأطباء كأداة فرز أولية. مفيد لمعظم البالغين، لكنه لا يميّز بين العضلات والدهون ولا يكفي وحده للحكم على صحتك.كم سعرة حرارية تحتاج يوميًا؟ من معدل الأيض الأساسي إلى خطة إنقاص الوزناحتياجك من السعرات ليس رقمًا عامًا مثل 2,000؛ يعتمد على وزنك وطولك وعمرك وجنسك ونشاطك. معادلتان بسيطتان تعطيانك تقديرًا جيدًا تبدأ منه ثم تعدّله حسب النتائج.تباين الألوان في الويب: ما معايير WCAG وكيف تختار ألوانًا مقروءة؟نص رمادي فاتح على خلفية بيضاء قد يبدو أنيقًا على شاشتك، لكنه صعب القراءة على هاتف في شمس الظهيرة أو لضعاف البصر. معايير WCAG تعطيك أرقامًا واضحة للحكم على أي لونين.