الانتقال إلى المحتوى الرئيسي
الوحدة 7 · الدرس 2 من 426/32 في الدورة~10 min
دروس الوحدة (2/4)

الاستبدال الأساسي و `$1`

في JavaScript، يقوم String.prototype.replace(regex, replacement) بإجراء مطابقة النمط واستبدال كل تطابق بالسلسلة المحددة. مع g علم أنه يستبدل جميع التطابقات؛ بدونها، الأول فقط. محمي_INLINE_2 يفرض السلوك العام (ويتطلب علامة g على التعبير العادي).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

المراجع في سلسلة الاستبدال

داخل السلسلة البديلة، هذه أشياء خاصة:

  • $1, $2, \u2026 -- مرجع خلفي إلى المجموعة المرقمة من التعبير العادي.
  • $<name> -- مرجع خلفي إلى المجموعة المسماة.
  • $& -- المباراة بأكملها.
  • `$`` -- text before the match.
  • $' -- text after the match.
  • $$ -- a single literal $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

إعادة تنسيق التاريخ عن طريق عكس الترتيب. يحتوي التعبير العادي على 3 مجموعات، وفي السلسلة البديلة التي تشير إليها كـ $1، $2، $3.

مراجع خاصة في البدائل

بالإضافة إلى $1 و$2، يمكنك استخدام $& لإدراج النص المطابق بالكامل، $ for all text preceding the match, and$'` لكل النص الذي يليه. وهذا يسمح ببدائل غنية حتى بدون كتابة كود JS.

جربه

تمرين#regex.m7.l2.e1
المحاولات: 0جارٍ التحميل…

ابحث عن كل تاريخ بتنسيق YYYY-MM-DD مع ثلاث مجموعات (السنة والشهر واليوم). بهذه الطريقة يمكنك استخدام الاستبدال للحصول على DD/MM/YYYY.

جارٍ تحميل المحرر…
إظهار التلميح

استبدل \\d+ بـ \\d{4}، \\d{2}، \\d{2} داخل ثلاث مجموعات تم التقاطها بـ (...).

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#regex.m7.l2.e2
المحاولات: 0جارٍ التحميل…

ابحث عن "الأول والأخير" كمجموعتين مسماتين `nome` و`cognome`، حتى تتمكن من إعادة كتابتها كـ `cognome, nome` باستخدام `$<cognome>, $<nome>`.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم (?<nome>\\w+) و(?<cognome>\\w+) مفصولين بـ \\s+.

الحل متاح بعد 3 من المحاولات

التحدي الإضافي

تمرين#regex.m7.l2.e3
المحاولات: 0جارٍ التحميل…

Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.

جارٍ تحميل المحرر…
إظهار التلميح

Use two capture groups for last and first name; the replacement will be performed via $2 $1.

الحل متاح بعد 3 من المحاولات