التعبيرات العادية
التعبيرات العادية هي لغة رسمية للبحث عن السلاسل ومعالجتها في النص بناءً على استخدام الأحرف الأولية.
تسمح لك التعبيرات العادية بما يلي:
- البحث عن نص في سلسلة
- استبدل سلاسل فرعية في سلسلة
- استخراج المعلومات من سلسلة
تعد JavaScript ، جنبًا إلى جنب مع Perl ، إحدى لغات البرمجة التي يتم فيها بناء دعم التعبير العادي مباشرة في اللغة.
صعوبة في الاستخدام
من عيوب التعبيرات العادية أنها غالبًا ما تبدو غريبة وحتى مخيفة. هذا ينطبق بشكل خاص على القوالب الأكثر تعقيدًا.
let regExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
تعريف التعبيرات النمطية
تعريف التعبير العادي هو إنشاء قالب يتم على أساسه العمل مع السلاسل. في JavaScript ، التعبيرات النمطية هي كائن يمكن تعريفه بطريقتين.
- Literal
- Construction
تعريف التعبيرات النمطية باستخدام القيم الحرفية. للتعبيرات العادية ، مائلة/ ... /
هي حرفية ، فهي تلعب نفس دور الأقواس `` ... '' عند إنشاء السلاسل.
let regExp = /pattern/
إذا قررت إنشاء تعبيرات عادية باستخدام القيم الحرفية ، فيجب أن يوضع في الاعتبار أن طريقة الإنشاء هذه لا تسمح بالتغييرات الديناميكية في القيم المحددة. هذا يرجع إلى حقيقة أن القيم الحرفية للتعبير العادي تسبب precompilation عند تحليل النص.
تعريف التعبيرات النمطية باستخدام المنشئ.
let regExp = new RegExp('pattern')
يحدث تجميع التعبير العادي الذي تم إنشاؤه باستخدام المُنشئ في وقت تنفيذ النص. هذه الطريقة في الإنشاء تستحق الاستخدام إذا كان يتم إنشاء تعبيرك العادي من سلسلة يتم إنشاؤها ديناميكيًا.
استخدام
لنلقِ نظرة على استخدام التعبيرات النمطية باستخدام مثال:
let regExp = /banana/
مع هذا الرمز أنشأنا تعبير عادي بسيط يبحث عن السلسلةbanana
. لاختبار تعبير عادي ، يمكنك استخدام .test(string)
الطريقة ، نتيجة الطريقة أ boolean
القيمة.
في المثال ، يبحث التعبير النمطي عن السلسلة الفرعيةbanana
في السلسلة str
.
المراسي
تربط المراسي نمطًا ببداية السطر أو نهايته. للربط ببداية السطر ، استخدم^
, وحتى النهاية ، استخدم $
.
باستخدام هذا النمط/ banana /
سوف تبحث عن banana
في الخط كله. إذا كنت بحاجة إلى التحقق من وجود تطابق كامل لسلسلة مع قالب ، فأنت بحاجة إلى استخدام المراسي/ ^ banana $ /
. The .test ()
طريقة العودةtrue
فقط إذا كان الخط كله banana
.
أعلام
يتم استخدام العلامات لتحسين عمليات البحث عن التعبير العادي.
g
- عند البحث ، يبحث عن جميع التطابقات ؛i
- البحث لا يعتمد على الحالة[Z-z]
;m
- وضع متعدد الخطوطs
- يتحول على dotall الوضع ، حيث يمكن أن تتطابق النقطة.
مع حرف تغذية السطر ؛y
- عمليات البحث بدءًا من الحرف الموجود في موضع lastindex property** من التعبير النمطي الحالي ؛u
- تمكن Unicode الدعم.
استخدام العلامات بطرق مختلفة لإنشاء نمط تعبير عادي
- Literal
- Construction
let regExp = /pattern/anchor // prettier-ignore
يرجى ملاحظة أن الأعلام integral part من التعبير النمطي. لا يمكن إضافة العلامات أو إزالتها لاحقًا. كما يمكن دمج الأعلام.
حاول إزالة ملف i
علم من المثال.
let regExp = new RegExp('pattern', 'anchor')
يرجى ملاحظة أن الأعلام integral part من التعبير النمطي. لا يمكن إضافة العلامات أو إزالتها لاحقًا. كما يمكن دمج الأعلام.
Try removing the i
flag from the example. The search is now case sensitive.
مجموع
الموضوع واسع جدًا ونادرًا ما نستخدمه في التطوير ، لذلك إذا كنت مهتمًا ، يمكنك التعرف عليه بمزيد من التفاصيل here, hereand here.
مشاكل؟
اكتب ل Discord محادثة.
أسئلة:
ما هي التعبيرات النمطية عنه؟
- إنشاء القوالب
- التلاعب بالسلسلة
- تحرير السلاسل
ما هو الحرف المستخدم لإنشاء تعبير عادي حرفيًا؟
- شرطة مائلة `
/
- شرطة مائلة للخلف '\ `
- أقواس مربعة
[]
ما هي طريقة إنشاء تعبير عادي لا يسمح بإجراء تغييرات ديناميكية إضافية على القيم المحددة؟
- بالمعنى الحرفي
- في المنشئ
- مع أي طريقة ، التغيير الديناميكي مسموح به
لفهم مقدار ما تعلمته في هذا الدرس ، قم بإجراء الاختبار في mobile application من مدرستنا في هذا الموضوع.
الروابط
المساهمون✨
الشكر يعود إلى هؤلاء الأشخاص الرائعين (emoji key):
IIo3iTiv | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |