Lompati ke konten utama
Modul 7 · Pelajaran 2 dari 426/32 dalam kursus~10 min
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).

JS
'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 $.
JS
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

Latihan#regex.m7.l2.e1
Upaya: 0Memuat…

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.

Memuat editor…
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

Latihan#regex.m7.l2.e2
Upaya: 0Memuat…

Temukan 'pertama terakhir' sebagai dua grup bernama `nome` dan `cognome`, sehingga Anda dapat menulis ulang sebagai `cognome, nome` menggunakan `$<cognome>, $<nome>`.

Memuat editor…
Tunjukkan petunjuk

Gunakan (?<nome>\\w+) dan (?<cognome>\\w+) dipisahkan oleh \\s+.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#regex.m7.l2.e3
Upaya: 0Memuat…

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

Memuat editor…
Tunjukkan petunjuk

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

Solusi tersedia setelah 3 upaya