Ana içeriğe geç
Modül 7 · Ders 2 ders 4Kurstaki 26/32~10 min
Modül dersleri (2/4)

Temel değiştirme ve "1$"

JavaScript'te String.prototype.replace(regex, replacement) bir işlem gerçekleştirir desen eşleşmesi ve her eşleşmeyi verilen dizeyle değiştirir. g ile tüm eşleşmelerin yerine geçeceğini işaretleyin; onsuz, yalnızca ilki. replaceAll genel davranışı zorlar (ve normal ifadede g bayrağını gerektirir).

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

Değiştirme dizesindeki referanslar

Değiştirme dizesinin içinde bunlar özeldir:

  • $1, $2, \u2026 -- normal ifadenin numaralandırılmış grubuna geri referans.
  • $<name> -- adlandırılmış gruba geri referans.
  • $& -- maçın tamamı.
  • `$`` -- 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"

Sırayı ters çevirerek tarihi yeniden biçimlendirin. Regex'in 3 grubu vardır ve değiştirme dizesine $1, $2, $3 olarak başvuruyorsunuz.

Değiştirmelerde özel referanslar

$1 ve $2'nin yanı sıra, eşleşen metnin tamamını eklemek için $&, onu takip eden tüm metin için $ for all text preceding the match, and$'` kullanabilirsiniz. Bu, JS kodu yazmadan bile zengin değiştirmelere olanak tanır.

Deneyin

Egzersiz#regex.m7.l2.e1
Denemeler: 0Yükleniyor…

Her tarihi YYYY-AA-GG formatında üç grupla (yıl, ay, gün) bulun. Bu şekilde GG/AA/YYYY elde etmek için değiştirmeyi kullanabilirsiniz.

Düzenleyici yükleniyor…
İpucu göster

(...) ile yakalanan üç grup içinde \\d+'yı \\d{4}, \\d{2}, \\d{2} ile değiştirin.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#regex.m7.l2.e2
Denemeler: 0Yükleniyor…

'İlk son'u iki adlandırılmış grup olarak 'nome' ve 'cognome' olarak bulun, böylece bunu '$<cognome>, $<nome>' kullanarak 'cognome, nome' olarak yeniden yazabilirsiniz.

Düzenleyici yükleniyor…
İpucu göster

\\s+ ile ayrılmış (?<nome>\\w+) ve (?<cognome>\\w+) kullanın.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#regex.m7.l2.e3
Denemeler: 0Yükleniyor…

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

Düzenleyici yükleniyor…
İpucu göster

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

3 denemeden sonra çözüm mevcut