القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

التعبيرات العادية ، المعروفة عمومًا باسم "regex" أو "regexp" ، هي سلاسل تصف نمط البحث. يمكنك استخدام التعبيرات العادية للتحقق مما إذا كانت السلسلة تحتوي على نمط معين ، واستخراج المعلومات من سلسلة ، واستبدال أجزاء من سلسلة بنص جديد.

تعرف على البنية الأساسية للتعبيرات النمطية وكيفية استخدامها في JavaScript.

البنية الأساسية للتعبيرات العادية

هناك طريقتان يمكنك من خلالهما إنشاء تعبير عادي في JavaScript: استخدام التعبير العادي الحرفي واستخدام الامتداد RegExp البناء.

يتكون التعبير العادي الحرفي من نمط محاط بشرطة أمامية متبوعة بعلامة اختيارية.

على سبيل المثال:

// بدون علم
مقدار ثابت regexExpression_1 = /pattern/

// مع العلم
مقدار ثابت regexExpression_2 = /pattern/علَم

العلامة هي معلمة اختيارية يمكنك إضافتها إلى تعبير عادي لتعديل سلوكه. على سبيل المثال:

مقدار ثابت regexFlag = /the/g;

ال ز تشير العلامة إلى أن التعبير يجب أن يتطابق مع جميع التكرارات ، وليس الأول فقط.

يمكنك أيضًا إنشاء تعبير عادي باستخدام الامتداد RegExp البناء. على سبيل المثال:

instagram viewer
مقدار ثابت regexExpression = جديدRegExp("نمط", "ز");

ال RegExp يأخذ المُنشئ معلمتين: نمط - سلسلة أو تعبير عادي حرفي - وعلامة (علامات).

هناك علامتان شائعتان إلى حد ما ستستخدمهما مع التعبير العادي في جافا سكريبت:

  • ز: تجعل العلامة العامة التعبير العادي يطابق جميع تكرارات النمط في السلسلة المحددة بدلاً من التكرار الفردي.
  • أنا: العلامة غير الحساسة لحالة الأحرف تجعل التعبير العادي يتجاهل حالة النمط ويتطابق مع الأحرف الكبيرة والصغيرة في السلسلة المحددة.

يمكنك استخدام العلامات معًا في تعبير واحد بأي ترتيب. على سبيل المثال:

مقدار ثابت regexExpression = جديدRegExp("نمط", "جي");

سيطابق هذا التعبير جميع تكرارات "النمط" ، بغض النظر عن الحالة.

في التعبيرات النمطية ، يكون لبعض الأحرف ، المعروفة باسم الأحرف الأولية ، معاني خاصة. يمكنك استخدامها لمطابقة أنواع معينة من الشخصيات أو الأنماط.

فيما يلي بعض الأحرف الأولية الأكثر استخدامًا ومعانيها:

  • حرف البدل (.): يتطابق هذا الحرف مع أي حرف واحد باستثناء سطر جديد. إنها أداة مفيدة لمطابقة الأنماط بأحرف غير معروفة.
  • نجم كليني (*): هذا الحرف يطابق صفرًا أو أكثر من تكرارات الحرف أو المجموعة السابقة. يسمح للحرف أو المجموعة السابقة بالظهور في أي عدد من المرات في السلسلة ، بما في ذلك الصفر.
  • الشخصية الاختيارية (?): هذا الحرف يطابق صفرًا أو يتطابق مع تكرار واحد لحرف أو مجموعة سابقة.
  • بداية خط المرساة (^): هذا الحرف يطابق فقط بداية سطر أو سلسلة.
  • نهاية خط المرساة ($): هذا الحرف يطابق نهاية سطر أو سلسلة.
  • مجموعة الأحرف / الفئة ([]): مجموعة أحرف تطابق أي حرف من مجموعة أحرف في سلسلة. يمكنك تحديدها باستخدام الأقواس المربعة [] ويمكنك تحديد مجموعة من الأحرف الثابتة أو الأحرف الخاصة أو مجموعات معينة من الأحرف.
  • حرف التناوب (|): يتطابق هذا الحرف مع الحرف أو المجموعة السابقة أو التالية. إنه يعمل بشكل مشابه لـ OR مشغل جافا سكريبت.
  • تجميع الأحرف (()): يسمح لك حرف التجميع بتجميع الأحرف أو التعبيرات الفرعية ، وتطبيق عوامل التشغيل عليها كوحدة واحدة ، والتحكم في ترتيب العمليات.

اختبار سلسلة مقابل تعبير عادي في JavaScript

في JavaScript ، يمكنك اختبار سلسلة مقابل تعبير عادي باستخدام عدة طرق.

يفترض هذا القسم أن لديك فهمًا أساسيًا للتعبيرات والأنماط النمطية. إذا لم تكن مرتاحًا للتعبيرات العادية ، فتحقق من ذلك دليل المبتدئين للتعبيرات العادية أولاً.

طريقة الاختبار

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

على سبيل المثال:

يترك regex = /.com$/;
يترك str = "example.com";
وحدة التحكم.log (regex.test (str)) ؛ // حقيقي

يطابق هذا التعبير العادي سلسلة تنتهي بـ ".com".

طريقة exec

ال .exec () تقوم الطريقة بإرجاع مصفوفة تحتوي على النص المتطابق وأي مجموعات أو مجموعات تم التقاطها باطل إذا لم يتم العثور على تطابق. تأخذ هذه الطريقة سلسلة لإجراء البحث كوسيطة. إنه مفيد للتعبيرات العادية الأكثر تعقيدًا.

على سبيل المثال:

يترك regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
يترك str = "123-456-7890";
يترك النتيجة = regex.exec (str) ؛

لو (النتيجة! == باطل) {
وحدة التحكم.سجل(`$ {نتيجة [0]} هو رقم هاتف صالح`);
} آخر {
وحدة التحكم.سجل("رقم الهاتف غير صحيح");
}

يتطابق التعبير العادي أعلاه مع سلسلة تبدأ بحرف اختياري "("وثلاثة أرقام واختياري")". ثم يبحث عن خيار اختياري "-", "."، أو مسافة ، متبوعة بثلاثة أرقام. يبحث أخيرًا عن خيار "-", "."، أو مسافة متبوعة بأربعة أرقام في نهاية السلسلة.

يتطابق هذا التعبير العادي مع أرقام الهواتف بتنسيق "(xxx) xxx-xxxx" أو "xxx-xxx-xxxx" أو "xxx.xxx.xxxx" أو "xxx xxx xxxx".

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

طريقة الاستبدال

ال .يستبدل() يبحث الأسلوب عن تطابق بين تعبير عادي وسلسلة ويستبدل النص المطابق بنص بديل محدد. هذه طريقة لكائنات السلسلة ، وهي تأخذ تعبيرًا عاديًا وسلسلة نصية بديلة كوسائط.

على سبيل المثال:

يترك سلسلة = "الثعلب البني السريع يقفز فوق الكلب الكسول.";
يترك التعبير = /The/gi;
يترك newString = string.replace (تعبير ، "أ");
وحدة التحكم.log (newString) ؛ // "ثعلب بني سريع يقفز فوق كلب كسول."

هذا المثال يستدعي يستبدل() طريقة على خيط متغير ، تمرير التعبير النمطي ، تعبير. سيطابق التعبير العادي جميع تكرارات "The" في السلسلة ، بغض النظر عن الحالة. استدعاء طريقة الاستبدال يوجهها لاستبدال كل تكرار بالسلسلة "a".

اعتبارات الأداء أثناء استخدام التعبيرات العادية

على الرغم من أن التعبيرات العادية تساعد في مطابقة السلاسل ومعالجتها ، إلا أنها قد تكون مكلفة من حيث الأداء. يعد جعل الأنماط محددة قدر الإمكان وإبقائها بسيطة أمرًا حيويًا للحفاظ على أدائها.