ما هي التعابير النمطية؟
التعابير النمطية (Regular Expressions أو Regex) لغة صغيرة لوصف أنماط النصوص، تتيح لك البحث عن تراكيب معقدة واستبدالها والتحقق منها بسطر واحد. تُستخدم في كل لغات البرمجة تقريبًا (JavaScript وPython وPHP وJava) وفي محررات النصوص وأدوات سطر الأوامر، للتحقق من صحة البريد الإلكتروني وأرقام الهواتف، واستخراج البيانات من النصوص، وتنظيف الملفات.
كيف تستخدم الأداة؟
- اكتب النمط في خانة Pattern دون الشرطتين المائلتين.
- أضف الأعلام (Flags):
gلكل التطابقات، وiلتجاهل حالة الأحرف، وmلتعدد الأسطر، وsلجعل النقطة تطابق السطر الجديد، وuلدعم يونيكود. - اكتب نصًا تجريبيًا وشاهد التطابقات مظللة فورًا.
- راجع جدول التطابقات لمعرفة موضع كل تطابق ومجموعاته الملتقطة.
- اكتب نص الاستبدال باستخدام
$1و$2للإشارة إلى المجموعات، كما في المثال الذي يحوّل صيغة التاريخ.
التعامل مع النص العربي
الرمز \w لا يطابق الحروف العربية في JavaScript، لذا استخدم النطاق [\u0600-\u06FF] لمطابقة الحروف العربية، أو \p{L} مع العلم u لمطابقة الحروف في جميع اللغات. وتذكر أن حد الكلمة \b لا يعمل مع العربية أيضًا، فاستعض عنه بـ (?<!\p{L}) و(?!\p{L}).
أنماط مفيدة
- رقم هاتف مغربي:
^(?:\+212|0)[5-7]\d{8}$ - رقم جوال سعودي:
^(?:\+966|0)5\d{8}$ - رمز بريدي من 5 أرقام:
^\d{5}$ - كلمة مرور قوية (8+ مع حرف كبير وصغير ورقم):
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
لتطبيق الاستبدال على نص طويل استخدم أداة البحث والاستبدال، فهي تدعم Regex أيضًا.
ورقة مرجعية سريعة للتعابير النمطية
| الرمز | المعنى |
|---|---|
. | أي حرف عدا سطر جديد |
\d / \w / \s | رقم / حرف أو رقم أو _ / مسافة |
* / + / ? | صفر أو أكثر / مرة أو أكثر / اختياري |
{2,5} | من 2 إلى 5 مرات |
^ / $ | بداية / نهاية السطر |
[a-z] / [^0-9] | مجموعة أحرف / أي شيء عدا الأرقام |
( ) / | | مجموعة التقاط / أو |
التعابير النمطية مع النص العربي
الرمز \w في JavaScript يطابق الأحرف اللاتينية فقط، لذلك لمطابقة الأحرف العربية استخدم النطاق [\u0600-\u06FF] أو خاصية Unicode \p{Script=Arabic} مع العلم u. وانتبه إلى أن التشكيل أحرف مستقلة، فقد تحتاج إلى إزالته أولًا عبر أداة إزالة التشكيل.
الأسئلة الشائعة
أي محرك Regex تستخدم الأداة؟
محرك JavaScript المدمج في متصفحك، وهو متوافق إلى حد كبير مع لغات أخرى مع اختلافات بسيطة في بعض الميزات المتقدمة.
لماذا لا يطابق \w الحروف العربية؟
لأن \w في JavaScript يقتصر على الحروف اللاتينية والأرقام و_. استخدم [\u0600-\u06FF] أو \p{L} مع العلم u.
ما فائدة العلم g؟
يجعل البحث يجد كل التطابقات بدل التوقف عند الأول.
كيف أشير إلى مجموعة في الاستبدال؟
استخدم $1 للمجموعة الأولى و$2 للثانية، أو $
هل يُرسل النص إلى خادم؟
لا، كل شيء يعمل في متصفحك.
آخر تحديث: