Ana içeriğe geç
Modül 7 · Ders 3 ders 4Kurstaki 27/32~12 min
Modül dersleri (3/4)

Geri aramayla değiştirin

Değiştirme dizesi yeterli değilse bir işlev iletin: str.replace(regex, (match, ...groups) => string). Geri arama çağrılır her maç için ve dönüş değeri yerine geçer.

JS
'prezzi: 10 20 30'.replace(/\d+/g, (m) => Number(m) * 1.22);
// "prezzi: 12.2 24.4 36.6" (22% VAT)

Geri arama argümanları

JS
str.replace(regex, (match, p1, p2, ..., offset, original, groups) => ...);
  • match -- maçın tamamı.
  • p1, p2, \u2026 -- yakalanan gruplar sırayla.
  • offset -- orijinal dizedeki eşleşmenin dizini.
  • original -- dizenin tamamı.
  • groups -- adlandırılmış gruplara (varsa) sahip nesne.
JS
'2024-03-15'.replace(/(\d{4})-(\d{2})-(\d{2})/, (_, a, m, g) => `${g}/${m}/${a}`);
// "15/03/2024"

Geri arama size isteğe bağlı güç verir: ayrıştırma, arama, dönüştürme, HTML statik bir dizenin yapamayacağı her şeyden kaçmak.

Geri aramaları değiştirmede gelişmiş argümanlar

Geri çağırma işlevi birkaç argüman alır: tam eşleşme, yakalanan her grup, tüm metin içindeki eşleşmenin uzaklığı ve orijinal giriş dizesi. Bu, karmaşık bağlam tabanlı dönüşüm mantığını mümkün kılar.

Deneyin

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

Metindeki her tamsayıyı bulun. (Bunun yerine iki katına çıkarmak için `(m) => Number(m) * 2` komutunu geçirirsiniz.)

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

Her tamsayıyı tek bir eşleşme olarak yakalamak için \\d+ (bir veya daha fazla rakam) kullanın.

3 denemeden sonra çözüm mevcut

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

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

Her e-postayı bulun (basitleştirilmiş form: harfler/rakamlar/noktalar/alt çizgi @ etki alanı). Bu şekilde bir geri arama onu "***@domain" olarak düzenleyebilir.

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

Kullanıcı adında ve etki alanında noktaları kabul etmek için sınıfı [\\w.]+ olarak genişletin.

3 denemeden sonra çözüm mevcut

Ek zorluk

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

Match every word consisting of letters in the text, so it can be transformed to uppercase via a callback.

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

[a-zA-Z]+ ile basit harfleri bulun.

3 denemeden sonra çözüm mevcut