Pelajaran modul (2/4)
Penggantian dasar dan `$1`
Dalam JavaScript, String.prototype.replace(regex, replacement) melakukan a
pencocokan pola dan mengganti setiap kecocokan dengan string yang diberikan. Dengan g
tandai itu menggantikan semua kecocokan; tanpanya, hanya yang pertama. replaceAll
memaksa perilaku global (dan memerlukan tanda g di regex).
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"Referensi di string pengganti
Di dalam string pengganti, ini spesial:
$1,$2, \u2026 -- referensi balik ke grup bernomor pada regex.$<name>-- referensi balik ke grup bernama.$&-- keseluruhan pertandingan.- `$`` -- 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"Format ulang tanggal dengan membalik urutannya. Regex memiliki 3 grup, dan di
string pengganti yang Anda referensikan sebagai $1, $2, $3.
Referensi khusus dalam penggantian
Selain $1 dan $2, Anda dapat menggunakan $& untuk menyisipkan seluruh teks yang cocok, $ for all text preceding the match, and$'` untuk semua teks setelahnya. Hal ini memungkinkan penggantian yang kaya bahkan tanpa menulis kode JS.
Cobalah
Temukan setiap tanggal dalam format YYYY-MM-DD dengan tiga kelompok (tahun, bulan, hari). Dengan cara ini Anda bisa menggunakan replace untuk mendapatkan DD/MM/YYYY.
Tunjukkan petunjuk
Ganti \\d+ dengan \\d{4}, \\d{2}, \\d{2} di dalam tiga grup yang diambil dengan (...).
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan 'pertama terakhir' sebagai dua grup bernama `nome` dan `cognome`, sehingga Anda dapat menulis ulang sebagai `cognome, nome` menggunakan `$<cognome>, $<nome>`.
Tunjukkan petunjuk
Gunakan (?<nome>\\w+) dan (?<cognome>\\w+) dipisahkan oleh \\s+.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.
Tunjukkan petunjuk
Use two capture groups for last and first name; the replacement will be performed via $2 $1.
Solusi tersedia setelah 3 upaya