مقدمة عن التعابير القياسية Regular Expression
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سأقدم نظرة عامة، ومُقدمة على التعابير القياسية Regular Expression وذلك لأهميتها الكبيرة في البرمجة.
في هذا الدرس سوف أستخدم بإذن الله لغة PHP في عمل اختبارات على الـ Regular Expression
تعريف Regular Expression:
هو كائن يصف نمطًا من المحارف ( أو الكلمات ).
تعريف أعمق للتعابير القياسية:
هي سلسلة من الأحرف التي تحدد نمطًا للبحث داخل النصوص (String) أو للمطابقة بين سلاسل من الأحرف.
الهدف من التعاببير القياسية هو تسهيل عمليات البحث والاستبدال داخل النصوص، وتستخدم غالبًا في عمليات التحقق (Validation) وعمليات البحث (Searching) وايضًا في الحماية.
ولتوضيح الفكرة بشكل أفضل بإمكاننا وضع مثال بسيط واقتراح الحلول له ثم بعد ذلك تبسيط الحل باستخدام التعابيير القياسية والتي سنرمز لها لاحقًا بـ RegExp.
لنفرض أننا سنقوم ببرمجة نموذج تسجيل وستكون المدخلات المطلوبة (اسم المستخدم - Username - والبريد الإلكتروني - Email -) ونريد أن نتأكد من التالي:
- اسم المستخدم يجب أن يكون خليط من حروف وأرقام ، والرموز التالية فقط (_-.).
- البريد الإلكتروني يجب أن يكون بالشكل التالي : email_name@domain_name.top-level-domain مثال: [email protected].
وسيكون شكل نموذج التسجيل كالأتي:
الحلول المقترحة كثيرة، مثلًا لكي نتأكد أن إسم المستخدم خالٍ من المسافات والرموز نحتاج لعمل تصفية (Filter) له، والتأكد اولًا من وجود مسافات واستبدالها مثلًا بالرمز _ او ازالتها كليًا، بعد ذلك تنقيح الاسم من الرموز الممنوعة ... عملية طويلة
اما البريد الإلكتروني يجب ان نتأكد اولًا من خلوه من المسافات ايضًا، والرموز الممنوعة في اغلب مشغلات البريد الإلكتروني، بعد ذلك التحرك قليلًا للتأكد أنّ ماقبل علامة @ هو String ومابعده String ثم التحقق أن ماقبل علامة النقطة - dot - هو String ومابعده هو top-level-domain ... عملية أطول
في التعابيير القياسية يمكننا اختصار كل هذه العمليات بسطر واحد أو نصف سطر حتى، وفي درسنا هذا سنتعلم كيف نحل مشكلتنا هذه ان شاء الله.
اولًا سنشرح بناء الـ RegExp
/ RegExp /
هذا المتعارف عليه تقريبًا في كل لغات البرمجة، وهو وضع / - Slash - ثم كتابة ال RegExp بعد ذلك الاغلاق بـ / - Slash -. يمكن أيضًا استخدام طرائق اخرى مع PHP.
# RegExp # ! RegExp ! @ RegExp @
هذه طرائق أخرى لإستخدامه مع لغة PHP.
لاحظ الدالة المنفذة للـ RegExp في لغة PHP هي عائلة دوال Preg
والأكثر استخدامًا هي دالة preg_match ، والتي تقوم بعمل مطابقة بين النمط (Pattren) المطلوب والنص المدخل (Subject) وهي ماسوف نستخدمه في حل مكشلتنا.
preg_match ($pattren , $subject)
ثانيًا سنضع جدول بالأنماط المدعومة في الـ RegExp وهي متفق عليها تقريبًا:
ثالثًا تطبيق ماتعلمناه في مشكلتنا
ليكون فهم الـ RegExp اعمق وشامل، سنقوم بتطبيق دالة preg_match وماتعلمناه من اساسيات في حل مكشلتنا.
<?php
$username = "Shino";
$email = "[email protected]";
// Validate
if (!preg_match('/^[\w_-]+$/', $username)) {
echo "Please enter unique username. e.g. cielblog.";
} else {
echo "Valid username.";
}
if (!preg_match('/[A-Za-z0-9_\-.]+@[A-Za-z0-9_\-.]+\.(com|org|net)/', $email)) {
echo "";
} else {
echo "Valid email.";
}
لاحظ في الكود اعلاه ستكون النتيجة ايجابية لان المدخلات كلها تطابق الفحص!
لاحظ استخدمنا علامة النفي ( ! ) في التحققات، وهذا يعني إن لم يتحقق الفحص اطبع الرسالة التالية، وان تحقق اطبع الرسالة التالية.
ولأرسخ الفكرة ساقوم بشرح مختصر لأحدى الانماط المستخدمة، وسأترك الأخرى لكم
كما هو موضح بالصورة أعلاه، سيتم التحقق فيما اذا كانت المجموعة الأولى مكونة من الحروف A الى Z او a الى z او 0 الى 9 او الرموز _ - . ثم بعد ذلك علامة (at) بعد ذلك مجموعة مابعد علامة (at) تليها احدى الخيارات com او org او net.
مصادر المعلومات المدرجة بهذا المقال:
- جدول الأنماط والرموز المستخدمة في التعابير القياسية :: ستحتاجه في الخطوة 2 من هذا الدرس.
- تعريف مختصر من W3School
- تعريف متقدم من Wikipedia
- موقع يشرح الـ RegExp بطريقة جميلة ومختصرة
هذه هي التعابير القياسية بكل بساطة، أتمنى أن يكون هذا الدرس - قابل للفهم - وخفيف ومفيد ايضًا.
تحياتي لكم.
التعليقات (2)
مقال مفيد
التعابير القياسية تقلل الكثير من الوقت والجهد ولكن عملية تعلمها معقدة بعض الشيء ( بالنسبة لي )
شخصيا لا احبذ عمل رقولار اكسبرشن للايميلات لاسباب كثيرة اهمها عدم امكانية حصر الدومين اكستنشن دوت كوم ام دوت نت ام دوت اورق ليس بالامر الكافي لهذا الامر ..
الحل الوحيد الممكن عمله هو عملية الvalidation بعد التسجيل لتفعيل الحساب مثلا.
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !