Kantong dalam Regex itu Sendiri di JavaScript
Konten kantong tidak hanya tersedia di string pengganti, tetapi juga di dalam regex itu sendiri: kita dapat meletakkan sesuatu di kantong, lalu langsung dalam regex mengatakan bahwa di sini harus berisi konten dari kantong tersebut.
Konten kantong dapat diakses berdasarkan nomornya,
dengan diawali garis miring terbalik. Misalnya,
kantong pertama akan dapat diakses seperti ini: \1,
kantong kedua seperti ini - \2, ketiga
- \3 dan seterusnya.
Saya yakin semua yang ditulis di atas masih sangat tidak jelas bagi Anda. Ini tidak mengherankan, karena kantong adalah bagian yang paling sulit dipahami dalam regex. Mari kita pahami dengan contoh.
Contoh
Misalkan kita memiliki string seperti ini:
javascriptlet str = 'aa bb cd ef';
Mari kita temukan semua tempat di dalamnya yang menampilkan dua huruf yang sama berurutan. Untuk menyelesaikan masalah, kita akan mencari huruf apa saja, memasukkannya ke dalam kantong, lalu memeriksa apakah karakter berikutnya adalah konten dari kantong tersebut:
javascriptlet res = str.replace(/([a-z])\1/g, '!');
Hasilnya, variabel akan berisi berikut ini:
javascript'! ! cd ef'
Contoh
Misalkan kita memiliki string seperti ini:
javascriptlet str = 'asxca buzxb csgd';
Mari kita temukan semua kata di dalamnya yang huruf pertama dan terakhirnya sama. Untuk menyelesaikan masalah, kita akan menulis pola berikut: huruf, diikuti oleh satu atau lebih huruf, lalu diikuti oleh huruf yang sama dengan huruf pertama:
javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');
Hasilnya, variabel akan berisi berikut ini:
javascript'! ! csgd'
Tugas Praktis
Diberikan string:
javascriptlet str = 'aaa bbb ccc xyz';
Temukan semua substring yang memiliki tiga huruf yang sama berurutan.
Diberikan string:
javascriptlet str = 'a aa aaa aaaa aaaaa';
Temukan semua substring yang memiliki dua atau lebih huruf yang sama berurutan.
Diberikan string:
javascriptlet str = 'aaa aaa bbb bbb ccc ddd';
Temukan semua substring yang memiliki dua kata yang sama berurutan.