التعابير النمطية
مفهوم التعابير النمطية
التعابير النمطية ( Regular Expressions ) عبارة عن نصوص تحتوي على أحرف و رموز لها معاني محددة.
للدقة أكثر، كل حرف أو رمز نضعه في هذا النص يعني شيء معين.
نستخدم التعابير النمطية للبحث في النصوص بطريقة سهلة جداً بدل الحاجة إلى كتابة خوارزميات معقدة من أجل الوصول إلى النتيجة المرجوة. و بالتالي يمكنك إستغلال التعابير النمطية في حال أردت البحث في النص عن شيء محدد بهدف إجراء تعديل أو تحديث عليه.
عندما تقوم بإنشاء حساب في أي موقع إلكتروني يُطلب منك إدخال بريدك الإلكتروني و كلمة سر. عندها أثناء كتابة البريد الإلكتروني و كلمة المرور تجده يظهر لك تنبيهات في حال لم تقم بإدخال بريد إلكتروني صحيح أو كلمة سر لها شكل معين. فمثلاً تجد أنه يطلب منك وضع كلمة سر تتألف من ثمانية أحرف على الأقل و يجب أن تحتوي على حرف كبير, حرف صغير, رقم و رمز.
التعامل مع التعابير النمطية
التعبير النمطي يمكن تجهيزه باستخدام الرمز
// الطريقة الأولى
var pattern = /pattern/modifiers;
// الطريقة الثانية
var pattern = new RegExp(pattern, modifiers);
pattern - باراميتر إجباري نضع مكانه نص يمثل التعبير النمطي، أي النمط المراد البحث عنه.modifiers - باراميتر إختياري مكانه يمكن وضع الحرفg أوi أوm لتحديد كيف سيتم تطبيق التعبير النمطي.
فيما يلي معنى الأحرف الإختيارية التي يمكن استخدامها مع التعابير النمطية.
الحرف | معناه |
---|---|
يجعل عملية البحث في النص تشمله كله ( Global Match ) بدلاً من التوقف عند أول عملية تطابق يتم إيجادها. | |
يجعل عملية البحث في النص لا تراعي حالة الأحرف ( Case Insensitive ) بمعنى أنها لا تكترث ما إن كانت الأحرف الأجنبية كبيرة أو صغيرة. | |
يجعل عملية البحث في النص تعامل الرمز |
مكان الباراميتر الإختياري
التعبير النمطي المستخدم في المثال التالي معناه إبحث عن الكلمة
إذاً حتى لو تم إيجاد كلمة البحث مكتوبة
مثال
الأسلوب الأول لتعريف التعبير النمطي.
var pattern = /codafox.blogspot.com/i;
الأسلوب الثاني لتعريف التعبير النمطي.
var pattern = new RegExp(/codafox.blogspot.com/, 'i');
الأسلوب الثالث لتعريف التعبير النمطي.
var pattern = new RegExp('codafox.blogspot.com', 'i');
إستخدام التعابير النمطية
في درس النصوص تعرفنا على جميع الدوال الجاهزة التي يمكن استخدامها للتعامل مع النصوص بما فيها الدالة
أي تعديل على النص يتم بواسطة هذه الدوال لا يتم تطبيقه على النص الأصلي، بل يتم إرجاع نسخة جديدة معدلة منه.
تبديل النص باستخدام التعابير النمطية
في المثال التالي قمنا باستخدام الدالة
ملاحظة: التعبير النمطي وضعناه كنص عادي، و قد استخدمنا الحرف
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// وضعنا فيه نص عادي text المتغير
let text = "Youtube is free. You can learn anything at youtube.com";
// 'Harmash' بالكلمة 'youtube' مع تبديل كل كلمة text وضعنا فيه نسخة من نص المتغير result المتغير
let result = text.replace(/youtube/gi, 'codafox.blogspot');
// result هنا قمنا بعرض النص الموجود في المتغير
document.write(result);
</script>
</body>
</html>
النتيجة:
البحث في النص باستخدام التعابير النمطية
في المثال التالي قمنا باستخدام الدالة
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// وضعنا فيه نص عادي text المتغير
let text = 'Welcome to codafox.blogspot.com';
// text موجودة في نص المتغير 'harmash' أول كلمة index وضعنا فيه رقم result المتغير
let result = text.search(/codafox.blogspot.com/i);
// لا يساوي 1- فهذا يعني أنه تم إيجاد الكلمة في النص result إذا كان رقم المتغير
if (result != -1) {
// الخانة التي تم إيجاد التطابق ابتداءاً من عندها index هنا سيتم طباعة رقم
document.write('Found at index = ' + result);
}
else {
// هنا سيتم طباعة عبارة أنه لم يتم إيجاد تطابق
document.write('No match found!');
}
</script>
</body>
</html>
النتيجة:
دوال الكائن RegExp
سواء قمت بتعريف التعبير النمطي بواسطة الكونستركتور
الدالة و تعريفها | |
---|---|
1 | إذا تطابق التعبير النمطي مع النص فإنها ترجع النتيجة كمصفوفة (فيها الموقع الذي تم فيه إيجاد التطابق و القيمة التي تطابقت مع التعبير)، و إن لم يتطابق معه فإنها ترجع القيمة |
2 | إذا تطابق التعبير النمطي مع النص فإنها ترجع القيمة |
3 |
الأحرف المميزة
الأحرف المميزة ( Special Characters ) عبارة عن رموز لها معنى خاص و لقد ذكرناهم في الجدول التالي.
الرمز | إستخدامه |
---|---|
يستخدم للتشييك على الأحرف الموضوعة في بداية كل سطر في النص. مثال: هذا التعبير يقصد منه هل النص أو كل سطر فيه يبدأ بكلمة |
|
يستخدم للتشييك على الأحرف الموضوعة في نهاية كل سطر في النص. مثال: هذا التعبير يقصد منه هل النص أو كل سطر فيه ينتهي بكلمة |
|
يستخدم للإشارة إلى وجوب وجود أي حرف ما عدا الحرف مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم لمعرفة ما إذا كان الحرف الموضوع قبله موجود مرة واحدة على الأقل في النص. مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم في حال عدم الإكتراث ما إذا كان الحرف الموضوع قبله موجود مرة، عدة مرات أو غير موجود على الإطلاق في النص. مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم لمعرفة ما إذا كان الحرف الموضوع قبله موجود مرة واحدة أو غير موجود في النص. مثال: هذا التعبير يقصد منه هل يوجد الكلمة |
|
يستخدم لمعرفة ما إذا كان النص الموضوع قبله أو النص الموضوع بعده موجود في النص. مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم لمعرفة ما إذا كان الحرف الموضوع قبله موجود في النص عدد محدد من المرات. مكان الحرف مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم لمعرفة ما إذا كان الحرف الموضوع قبله موجود في النص عدد مرات محصور بين عددين. مكان الحرف مثال: هذا التعبير يقصد منه هل يوجد |
|
يستخدم لمعرفة ما إذا كان الحرف الموضوع قبله موجود في النص عدد محدد من المرات على الأقل. مكان الحرف مثال: هذا التعبير يقصد منه هل يوجد |
وضع مجموعة من الإحتمالات
القصد هنا هو أن تستخدم الرمز
الرمز | إستخدامه |
---|---|
هذا التعبير يقصد منه هل يوجد في النص الحرف |
|
هذا التعبير يقصد منه هل يوجد في النص أي حرف غير الأحرف |
|
هذا التعبير يقصد منه هل يوجد في النص أحد الأحرف الأبجدية الموجودة بين الحرف هنا كأننا قلنا: |
|
هذا التعبير يقصد منه هل يوجد في النص الرقم |
|
هذا التعبير يقصد منه هل يوجد في النص أحد الأرقام الموجودة بين الرقم هنا كأننا قلنا: |
|
هذا التعبير يقصد منه هل يوجد في النص أي رقمين بين |
|
هذا التعبير يقصد منه هل يوجد في النص أحد الأحرف الأبجدية الموجودة بين أي كأنك تحاول معرفة ما إن كان يوجد أي حرف من الأحرف الأبجدية سواء كان الحرف كبير ( Capital Letter ) أو صغير ( Small Letter ). |
|
هذا التعبير يقصد منه هل يوجد في النص الرمز أي هذا الرمز يعامل هنا كأنه حرف عادي و هذا الأمر ينطبق على باقي الرموز الأخرى مثل |
|
هذا التعبير يقصد منه هل يوجد الحرف إذاً، هنا الرمز |
|
|
كلا التعبيرين يقصد منهما هل يوجد الحرف إذاً، في حال عدم وضع الرمز |
هذا التعبير يقصد منه هل يوجد في النص أي حرف أو رمز ما عدا الرمز |
السلاسل المميزة
السلاسل المميزة ( Special Sequences ) عبارة عن مجموعة أحرف يصبح لها معنى خاص حين يتم وضعها بعد الرمز
الرمز | إستخدامه |
---|---|
يطابق أي حرف بين هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أي حرف ليس بين هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أي حرف يمثل رقم بين هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أي حرف لا يمثل رقم بين هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أي حرف يمثل مسافة فارغة أو سطر فارغ. هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أي حرف لا يمثل مسافة فارغة أو سطر فارغ. هذا الرمز يعتبر إختصار للتعبير النمطي |
|
يطابق أول أو آخر أي سلسلة أحرف تحتوي على أحرف بين
|