انتقل إلى المحتوى الرئيسي

التعبيرات العادية

@serverSerrverlesskiy

التعبيرات العادية هي لغة رسمية للبحث عن السلاسل ومعالجتها في النص بناءً على استخدام الأحرف الأولية.

تسمح لك التعبيرات العادية بما يلي:

  • البحث عن نص في سلسلة
  • استبدل سلاسل فرعية في سلسلة
  • استخراج المعلومات من سلسلة

search

تعد JavaScript ، جنبًا إلى جنب مع Perl ، إحدى لغات البرمجة التي يتم فيها بناء دعم التعبير العادي مباشرة في اللغة.

صعوبة في الاستخدام

the complexity of using

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

let regExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

تعريف التعبيرات النمطية

search

تعريف التعبير العادي هو إنشاء قالب يتم على أساسه العمل مع السلاسل. في JavaScript ، التعبيرات النمطية هي كائن يمكن تعريفه بطريقتين.

تعريف التعبيرات النمطية باستخدام القيم الحرفية. للتعبيرات العادية ، مائلة/ ... / هي حرفية ، فهي تلعب نفس دور الأقواس `` ... '' عند إنشاء السلاسل.

let regExp = /pattern/

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

استخدام

pressing the button

لنلقِ نظرة على استخدام التعبيرات النمطية باستخدام مثال:

let regExp = /banana/

مع هذا الرمز أنشأنا تعبير عادي بسيط يبحث عن السلسلةbanana. لاختبار تعبير عادي ، يمكنك استخدام .test(string) الطريقة ، نتيجة الطريقة أ boolean القيمة.

محرر مباشر
النتيجة
Loading...

في المثال ، يبحث التعبير النمطي عن السلسلة الفرعيةbanana في السلسلة str.

المراسي

anchor

تربط المراسي نمطًا ببداية السطر أو نهايته. للربط ببداية السطر ، استخدم^, وحتى النهاية ، استخدم $.

محرر مباشر
النتيجة
Loading...

باستخدام هذا النمط/ banana / سوف تبحث عن banana في الخط كله. إذا كنت بحاجة إلى التحقق من وجود تطابق كامل لسلسلة مع قالب ، فأنت بحاجة إلى استخدام المراسي/ ^ banana $ /. The .test () طريقة العودةtrue فقط إذا كان الخط كله banana.

أعلام

Flag

يتم استخدام العلامات لتحسين عمليات البحث عن التعبير العادي.

  • g - عند البحث ، يبحث عن جميع التطابقات ؛
  • i - البحث لا يعتمد على الحالة[Z-z];
  • m - وضع متعدد الخطوط
  • s - يتحول على dotall الوضع ، حيث يمكن أن تتطابق النقطة . مع حرف تغذية السطر ؛
  • y - عمليات البحث بدءًا من الحرف الموجود في موضع lastindex property** من التعبير النمطي الحالي ؛
  • u - تمكن Unicode الدعم.

استخدام العلامات بطرق مختلفة لإنشاء نمط تعبير عادي

let regExp = /pattern/anchor // prettier-ignore

يرجى ملاحظة أن الأعلام integral part من التعبير النمطي. لا يمكن إضافة العلامات أو إزالتها لاحقًا. كما يمكن دمج الأعلام.

محرر مباشر
النتيجة
Loading...

حاول إزالة ملف i علم من المثال.

مجموع

الموضوع واسع جدًا ونادرًا ما نستخدمه في التطوير ، لذلك إذا كنت مهتمًا ، يمكنك التعرف عليه بمزيد من التفاصيل here, hereand here.

مشاكل؟

Problem

اكتب ل Discord محادثة.

أسئلة:

Question

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

  1. إنشاء القوالب
  2. التلاعب بالسلسلة
  3. تحرير السلاسل

ما هو الحرف المستخدم لإنشاء تعبير عادي حرفيًا؟

  1. شرطة مائلة `/
  2. شرطة مائلة للخلف '\ `
  3. أقواس مربعة []

ما هي طريقة إنشاء تعبير عادي لا يسمح بإجراء تغييرات ديناميكية إضافية على القيم المحددة؟

  1. بالمعنى الحرفي
  2. في المنشئ
  3. مع أي طريقة ، التغيير الديناميكي مسموح به

لفهم مقدار ما تعلمته في هذا الدرس ، قم بإجراء الاختبار في mobile application من مدرستنا في هذا الموضوع.

EnglishMoji!

الروابط

  1. Learn JavaScript
  2. MDN Web Docs
  3. JS RegExp

المساهمون✨

الشكر يعود إلى هؤلاء الأشخاص الرائعين (emoji key):


IIo3iTiv


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

EnglishMoji!