دروس الوحدة (2/4)
الاستبدال الأساسي و `$1`
في JavaScript، يقوم String.prototype.replace(regex, replacement) بإجراء
مطابقة النمط واستبدال كل تطابق بالسلسلة المحددة. مع g
علم أنه يستبدل جميع التطابقات؛ بدونها، الأول فقط. محمي_INLINE_2
يفرض السلوك العام (ويتطلب علامة g على التعبير العادي).
'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$.
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.
جربه
ابحث عن كل تاريخ بتنسيق YYYY-MM-DD مع ثلاث مجموعات (السنة والشهر واليوم). بهذه الطريقة يمكنك استخدام الاستبدال للحصول على DD/MM/YYYY.
إظهار التلميح
استبدل \\d+ بـ \\d{4}، \\d{2}، \\d{2} داخل ثلاث مجموعات تم التقاطها بـ (...).
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
ابحث عن "الأول والأخير" كمجموعتين مسماتين `nome` و`cognome`، حتى تتمكن من إعادة كتابتها كـ `cognome, nome` باستخدام `$<cognome>, $<nome>`.
إظهار التلميح
استخدم (?<nome>\\w+) و(?<cognome>\\w+) مفصولين بـ \\s+.
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
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 من المحاولات