للمطورين

دليل Regex المختصر: شرح التعبيرات النمطية بالأمثلة

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

الإجابة السريعة

الأساسيات: . أي حرف، و\d رقم، و\w حرف كلمة، و\s مسافة بيضاء، و* صفر أو أكثر، و+ واحد أو أكثر، و? اختياري، و{n,m} عدد مرات بين n وm، و^ البداية، و$ النهاية، و[abc] حرف من مجموعة، و(…) مجموعة التقاط، وa|b أحدهما. اختبر كل نمط في مختبر Regex قبل استخدامه في الكود.

مختبر Regex يميّز أربعة تواريخ يطابقها نمط بمجموعات مسماة، مع معاينة الاستبدال
نمط تواريخ بمجموعات مسماة، مع عرض كل تطابق وإعادة تنسيق التواريخ بصيغة YYYY-MM-DD. لقطة شاشة لأداتنا المجانية: مختبر التعبيرات النمطية (Regex).

التعبير النمطي (Regex) هو نمط يصف نصًا. وتستخدمه للبحث والتحقق والاستبدال: العثور على كل عناوين البريد في مستند، أو التحقق من صحة رمز بريدي، أو إعادة تنسيق التواريخ. وتعمل التعبيرات النمطية في كل لغات البرمجة تقريبًا وفي أدوات مثل VS Code وExcel وGoogle Sheets.

يستخدم هذا الدليل صياغة JavaScript، وهي قريبة جدًا من Python وJava وPHP ومعظم اللغات الأخرى.

فئات الحروف

النمطيطابقمثال
.أي حرف ما عدا فاصل الأسطرc.t يطابق cat وcot وc9t
\dرقم (0–9)\d\d يطابق 42
\wحرف لاتيني أو رقم أو شرطة سفلية\w+ يطابق user_1
\sمسافة بيضاء (مسافة، جدولة، سطر جديد)a\sb يطابق "a b"
\D \W \Sعكس \d و\w و\s\D+ يطابق abc
[abc]حرف واحد من a أو b أو cgr[ae]y يطابق gray وgrey
[^abc]أي حرف ما عدا a وb وc[^0-9] يطابق أي شيء ليس رقمًا
[a-z]نطاق[A-Za-z] يطابق أي حرف ASCII

تنبيه: لا يشمل \w و[a-z] الحروف العربية. للحروف العربية استخدم [\u0600-\u06FF]، أو \p{L} مع العلم u لأي حرف بأي لغة.

المكمِّمات

النمطالمعنىمثال
*صفر أو أكثرab*c يطابق ac وabc وabbc
+واحد أو أكثرab+c يطابق abc وabbc (وليس ac)
?صفر أو واحد (اختياري)colou?r يطابق color وcolour
{3}3 بالضبط\d{3} يطابق 123
{2,4}بين 2 و4\d{2,4} يطابق 12 و123 و1234
{2,}2 أو أكثر\w{2,} يطابق الكلمات من حرفين فأكثر
*? +?كسول: أقل قدر ممكن<.+?> يطابق وسم HTML واحدًا في كل مرة

المكمِّمات جشعة افتراضيًا، أي تطابق أكبر قدر ممكن. ففي النص <b>bold</b> يطابق النمط <.+> السلسلة كاملة، بينما يطابق النمط الكسول <.+?> الوسم <b> فقط.

المرتكزات والحدود

النمطالمعنى
^بداية النص (أو بداية كل سطر مع العلم m)
$نهاية النص (أو نهاية كل سطر مع العلم m)
\bحد الكلمة: \bcat\b يطابق "cat" لا "category"

استخدم ^…$ عند التحقق من مُدخل كامل. فبدون المرتكزات، يطابق \d+ بسهولة "123" داخل "abc123xyz". ولاحظ أن \b لا يعمل مع الحروف العربية، لأنه يعتمد على \w.

المجموعات والبدائل

النمطالمعنى
(abc)مجموعة التقاط: تحفظ المطابقة باسم $1 و$2…
(?:abc)مجموعة غير ملتقِطة: تجمّع دون حفظ
(?<year>\d{4})مجموعة مسمّاة، تُستخدم بالصيغة $<year>
cat|dogإما cat أو dog
\1مرجع خلفي: النص نفسه الذي التقطته المجموعة 1

النظر للأمام والخلف (Lookarounds)

تتحقق هذه التعبيرات مما يأتي قبل المطابقة أو بعدها، دون إدراجه فيها:

النمطالمعنىمثال
(?=…)متبوع بـ\d+(?=€) يطابق 50 في "50€"
(?!…)غير متبوع بـ\d+(?!€)
(?<=…)مسبوق بـ(?<=\$)\d+ يطابق 50 في "$50"
(?<!…)غير مسبوق بـ(?<!-)\d+

الأعلام (Flags)

  • g شامل: يجد كل المطابقات لا الأولى فقط.
  • i تجاهل حالة الأحرف: /hello/i يطابق "Hello".
  • m متعدد الأسطر: ^ و$ يعملان مع كل سطر.
  • s dotall: تجعل . تطابق فواصل الأسطر أيضًا.
  • u يونيكود: يفعّل فئات \p{…} مثل \p{L} لأي حرف بأي لغة، ومنها \p{Script=Arabic} للحروف العربية.

تهريب الحروف الخاصة

لهذه الحروف معانٍ خاصة: . * + ? ^ $ { } ( ) [ ] | \ /. ولمطابقتها حرفيًا، ضع شرطة مائلة عكسية قبلها. فـ \. تطابق نقطة حقيقية، لذا لا يطابق example\.com النص "exampleXcom".

أنماط عملية للنسخ

الاستخدامالنمط
تحقق بسيط من البريد الإلكتروني^[^\s@]+@[^\s@]+\.[^\s@]+$
رابط URL ‏(http/https)https?:\/\/[^\s/$.?#].[^\s]*
تاريخ (YYYY-MM-DD)^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
وقت (24 ساعة HH:MM)^([01]\d|2[0-3]):[0-5]\d$
لون سداسي عشري^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
كلمات عربية فقط^[\u0600-\u06FF\s]+$
عدد صحيح أو عشري^-?\d+(\.\d+)?$
مسافات زائدة\s{2,} (استبدلها بمسافة واحدة)
مسافات في نهاية السطر[ \t]+$ مع العلم m

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

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

  1. افتح مختبر Regex المجاني.
  2. اكتب النمط وفعّل الأعلام (g وi وm وs وu).
  3. الصق نصًا تجريبيًا، بما في ذلك أمثلة لا ينبغي أن تتطابق.
  4. راجع المطابقات المظللة ومجموعات الالتقاط المدرجة لكل منها.
  5. عاين الاستبدال باستخدام $1 أو $<name> أو $&.
  6. انسخ النمط ككود JavaScript أو Python.

جرّبها مجانًا: مختبر التعبيرات النمطية (Regex)

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

افتح الأداة

مثال: إعادة تنسيق التواريخ بالاستبدال

حوّل تواريخ مثل 31/12/2026 إلى صيغة ISO ‏2026-12-31:

Pattern:     (\d{2})\/(\d{2})\/(\d{4})
Replacement: $3-$2-$1

ومع المجموعات المسمّاة يصبح الأمر أسهل في القراءة:

Pattern:     (?<d>\d{2})\/(?<m>\d{2})\/(?<y>\d{4})
Replacement: $<y>-$<m>-$<d>

أخطاء شائعة

  • نسيان تهريب النقطة. . تطابق أي شيء، فاستخدم \. للنقطة الحرفية.
  • غياب المرتكزات في أنماط التحقق.
  • الإفراط في استخدام .*. فهو جشع وبطيء، والفئة المحددة مثل [^"]* أكثر أمانًا.
  • التراجع الكارثي. المكمِّمات المتداخلة مثل (a+)+$ قد تستغرق وقتًا لا ينتهي مع بعض المدخلات وتجمّد البرنامج. ويشغّل مختبرنا الأنماط بحد زمني ويحذّرك.
  • تحليل HTML بالتعبيرات النمطية. مقبول للبحث السريع، لكن استخدم محللًا حقيقيًا لـ HTML في أي عمل جاد.

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

هل التعبيرات النمطية متطابقة في كل اللغات؟

الصياغة الأساسية مشتركة، لكن التفاصيل تختلف. فلغة Python تستخدم (?P<name>…) للمجموعات المسمّاة، وبعض الميزات مثل النظر للخلف تختلف بين المحركات. اختبر دائمًا في النسخة التي ستستخدمها.

ماذا يعني \b؟

حد الكلمة: الموضع بين حرف كلمة وحرف ليس من حروف الكلمات. وبه تطابق الكلمات الكاملة فقط.

كيف أطابق سطرًا جديدًا؟

استخدم \n، أو \r?\n لتشمل نهايات الأسطر في Windows أيضًا.

الخلاصة

تعلّم القطع الأساسية (الفئات والمكمِّمات والمرتكزات والمجموعات)، وستصبح معظم الأنماط مقروءة. اجعل أنماطك محددة، وارتكز بها عند التحقق، واختبرها دائمًا بأمثلة حقيقية قبل اعتمادها.

وجدت معلومة قديمة أو غير واضحة؟ راسل contact@ultratoolsai.com وسنصححها.

مختبر التعبيرات النمطية (Regex) مجانية · خاصة · في متصفحك افتح الأداة