--- 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/) يتيح لك اختبار أنماط التعبير العادية في الوقت الفعلي وحفظ المفضلة واستكشاف الأنماط التي تم إنشاؤها بواسطة الآخرين.