96 lines
6.4 KiB
Markdown
96 lines
6.4 KiB
Markdown
---
|
|
title: Regular Expressions Reference
|
|
localeTitle: مرجع التعبيرات العادية
|
|
---
|
|
## مرجع التعبيرات العادية
|
|
|
|
في JavaScript ، تعتبر التعبيرات العادية اختصارًا تستخدم لمطابقة الجزء المطلوب من السلسلة. هذه هي مفيدة عند محاولة معالجة أو التحقق من صحة سلاسل المستخدمة في التعليمات البرمجية.
|
|
|
|
### بناء الجملة
|
|
|
|
تتكون التعبيرات العادية من جزأين - `pattern` `flags` (اختياري). النمط مكتوب بين شريحتين مائلتين ، متبوعتين بالأعلام الاختيارية: `var exp = /pattern/flags` .
|
|
|
|
#### أنماط - رسم
|
|
|
|
استخدام الحروف الأبجدية الرقمية (AZ، az، 0-9) يجعلها مطابقة مباشرة. ومع ذلك ، فإن القوة الحقيقية للتعبيرات العادية تأتي مع فئات الشخصيات.
|
|
|
|
قل ، على سبيل المثال ، تريد كل الأماكن سلسلة تحتوي على رقم من 0-9. بدلاً من الاتصال صراحة `/[0-9]/` ، يمكنك استخدام فئة الأحرف الخاصة لـ `/\d/` . تخطي الخط المائل العكسي الحرف `d` (لذا لا تتطابق مع الحرف `d` ) ، ولكن بدلاً من ذلك ، يستخدم قدرات المطابقة الخاصة لـ `\d` .
|
|
|
|
ينطبق هذا المبدأ نفسه على الأحرف غير الرقمية والمساحة البيضاء ومجموعات المطابقة العامة الأخرى. يمكن أن تصبح التعبيرات العادية أكثر تعقيدًا باستخدام بعض أنواع التعديل ، مثل الرمز `+` .
|
|
|
|
يسمح لك هذا المقيم بمطابقة الحرف السابق في نمطك مرة واحدة أو أكثر. `/s+/` سوف تطابق `s` في `desert` وكلا `s` الصورة في `dessert` !
|
|
|
|
هناك الكثير من المعدلات التي تسمح للنمط الخاص بك بمطابقة كل ما قد تحتاجه. راجع قسم "مزيد من المعلومات" أدناه للاطلاع على جميع خيارات الأحرف الممكنة للاستخدام في التعبيرات العادية.
|
|
|
|
#### أعلام
|
|
|
|
هناك 5 علامات يمكنك استخدامها لتطبيق قواعد محددة على التعبير العادي بأكمله الذي تكتبه. هم انهم:
|
|
|
|
`g` - المباراة العالمية ؛ هذا يسمح لك بمطابقة كل حالات التعبير الخاص بك ، بدلاً من التوقف بعد التواجد الأول.
|
|
|
|
`i` - مطابقة حالة التجاهل (لا تحتاج إلى شرح)
|
|
|
|
`m` - المباراة متعددة الخطوط. هذا ينطبق نمطك على كل سطر جديد ؛ إذا كنت تبحث عن خط يبدأ بنمط معين ، فإن هذا يفعل ذلك لجميع الخطوط ، وليس فقط في السطر الأول
|
|
|
|
`u` - تطابق Unicode ؛ هذه الإشارات لقراءة نمطك ك Unicode بدلاً من النص العادي
|
|
|
|
`y` - المباراة لزجة. هذا يطابق النقش الخاص بك فقط بدءاً من الفهرس الموجود في الخاصية `RegExp.lastIndex`
|
|
|
|
### خلق تعبير عادي
|
|
|
|
التعبير العادي هو نوع من الكائنات. يمكن بناؤها إما مع منشئ RegExp أو مكتوبة كقيمة حرفية من خلال إحاطة نمط في مائلة (/) حرفا.
|
|
|
|
`var re1 = new RegExp (" abc ") ;
|
|
var re2 = / abc /;
|
|
`
|
|
|
|
تمثل كل من كائنات التعبير العادية نفس النمط: حرف متبوعًا بـ ab متبوعًا بـ c.
|
|
|
|
### كائن RegExp
|
|
|
|
`RegExp` هو مُنشئ يقوم بإنشاء كائن من نمط التعبير العادي الذي تقوم بإنشائه. بالإضافة إلى التدوين الحرفي الموضح أعلاه ، يمكنك أيضًا استخدام تنسيق المُنشئ لإنشاء تعبير عادي: `new RegExp(pattern[, flags])`
|
|
|
|
### اختبار للمباريات
|
|
|
|
`console . log (/ abc /. test (" abcde ") );
|
|
// → true
|
|
console . log (/ abc /. test (" abxde ") );
|
|
// → false
|
|
`
|
|
|
|
### مطابقة مجموعة من الشخصيات
|
|
|
|
`console . log (/[0123456789]/. test (" in 1992") );
|
|
// → true
|
|
console . log (/[0 -9]/. test (" in 1992") );
|
|
// → true
|
|
`
|
|
|
|
### أنماط الاختيار
|
|
|
|
`var animalCount = /\ b \ d + ( pig | cow | chicken )s ?\ b /;
|
|
console . log ( animalCount . test ("15 pigs ") );
|
|
// → true
|
|
console . log ( animalCount . test ("15 pigchickens ") );
|
|
// → false
|
|
`
|
|
|
|
#### أساليب
|
|
|
|
ستستخدم على الأرجح التعبيرات العادية في أساليب `String` ، مثل `String.replace()` ، ولكن هناك عدد قليل من الطرق التي تنتمي إلى كائن `RegExp` .
|
|
|
|
على سبيل المثال ، يقوم `RegExp.test()` بإرجاع قيمة منطقية لتحديد ما إذا كان هناك تطابق بين نمط التعبير العادي والسلسلة المعنية. `RegExp.toString()` بتحويل كائن التعبير إلى سلسلة ، والتي يمكن أن تكون مفيدة عند تشغيل الاختبارات على التعليمات البرمجية.
|
|
|
|
يمكن أن تكون الوسيطة الأولى أيضًا تعبيرًا عاديًا ، وفي هذه الحالة يتم استبدال المطابقة الأولى للتعبير العادي. عند إضافة خيار ag (للعامة) إلى التعبير العادي ، سيتم استبدال كل التطابقات في السلسلة ، وليس فقط الأول.
|
|
|
|
`console . log (" Borobudur ". replace (/[ ou ]/ , "a ") );
|
|
// → Barobudur
|
|
console . log (" Borobudur ". replace (/[ ou ]/g , "a ") );
|
|
// → Barabadar
|
|
`
|
|
|
|
### معلومات اكثر:
|
|
|
|
* [هنا يمكنك أن تقرأ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) عن جميع أنماط مطابقة الأحرف ، خصائص الكائن ، انظر بعض الأمثلة وأكثر.
|
|
|
|
* [في ما يلي موقع رائع](https://regex101.com/) يتيح لك اختبار أنماط التعبير العادية في الوقت الفعلي وحفظ المفضلة واستكشاف الأنماط التي تم إنشاؤها بواسطة الآخرين. |