Sekarang Javascript telah terlihat di belakang (pada ES2018 ), pada lingkungan yang lebih baru, Anda dapat menghindari grup sepenuhnya dalam situasi seperti ini. Alih-alih, lihat di belakang apa yang datang sebelum kelompok yang Anda tangkap, dan cari yang akan datang setelahnya, dan ganti dengan yang baru !NEW_ID!
:
const str = 'name="some_text_0_some_text"';
console.log(
str.replace(/(?<=name="\w+)\d+(?=\w+")/, '!NEW_ID!')
);
Dengan metode ini, pertandingan penuh hanya bagian yang perlu diganti.
(?<=name="\w+)
- Cari di belakang name"
, diikuti oleh karakter kata (untungnya, lookbehinds tidak harus diperbaiki lebar dalam Javascript!)
\d+
- Cocokkan satu atau lebih digit - satu-satunya bagian dari pola yang tidak terlihat, satu-satunya bagian dari string yang akan ada dalam pertandingan yang dihasilkan
(?=\w+")
- Cari karakter kata yang diikuti oleh "
`
Perlu diingat bahwa tampilan di belakang cukup baru. Ini berfungsi dalam versi modern V8 (termasuk Chrome, Opera, dan Node), tetapi tidak di sebagian besar lingkungan lain , setidaknya belum. Jadi, meskipun Anda dapat menggunakan lookbehind di Node dan di browser Anda sendiri (jika berjalan pada versi modern V8), itu belum didukung oleh klien acak (seperti di situs web publik).