Sangat memahami ekspresi reguler JS --- pengelompokan
Saya menulis artikel tentang memulai dengan ekspresi reguler sebelumnya. Saya pikir saya relatif akrab dengan ekspresi reguler, tetapi hari ini saya menemukan jebakan lain. Mungkin itu karena saya tidak cukup hati -hati. Hari ini saya akan fokus untuk berbagi dengan Anda pengelompokan dalam ekspresi reguler JavaScript. Jika Anda tidak cukup memahami ekspresi reguler JS, Anda dapat mengklik di sini untuk mempelajari lebih lanjut.
Pengelompokan cukup banyak digunakan dalam keteraturan. Pengelompokan yang saya pahami adalah sepasang tanda kurung (). Setiap pasangan tanda kurung mewakili grup, dan grup dapat dibagi menjadi:
• Menangkap pengelompokan
• Pengelompokan yang tidak menangkap
Menangkap pengelompokan
Pengambilan pengelompokan akan mendapatkan hasil pengelompokan yang sesuai dalam bentuk istilah kedua dan istilah ketiga dalam fungsi seperti EXEC Match. Mari kita lihat contoh terlebih dahulu
var reg =/test (/d+)/; var str = 'test001 test002' baru; console.log (str.match (reg)); // ["test001", "001", indeks: 4, input: "test001 test002 baru"]
Dalam kode (/d+) adalah grup (beberapa orang juga menyebutnya sub-pola), tetapi mereka semua mewakili makna yang sama. Dalam contoh di atas, test001 adalah hasil dari pertandingan yang tepat. Namun, pencocokan grup adalah untuk menemukan karakter yang cocok dengan sub-pola/D+ dari seluruh hasil pertandingan yang tepat (yaitu, test001). Ini jelas 001. Tetapi situasi yang dihadapi hari ini seperti ini.
var reg =/test (/d)+/; var str = 'test001 test002' baru; Console.log (str.match (Reg)); // ["test001", "1", indeks: 4, input: "test001 test002 baru"]
Perbedaannya adalah bahwa (/d+) diubah menjadi (/d)+, dan seluruh hasil pencocokan masih test001, tetapi hasil pencocokan grup pertama berbeda. Mari kita lihat perbedaan mereka
(/D+) Ini adalah situasi pengelompokan. Karena secara default, pola pencocokan adalah pola serakah, yaitu, sebanyak mungkin cocok dengan semua /D+, hasil pertandingan adalah 001, dan kemudian sepasang tanda kurung ditambahkan di luar, yang berarti pengelompokan, sehingga hasil kecocokan dalam kelompok pertama adalah 001. Mari kita lihat ( /d)+ dalam contoh kedua. Ini juga merupakan pola serakah. Pertama, pertama -tama akan mencocokkan 0 dan kemudian 0 dan kemudian cocok dengan akhir 1. Ini juga cocok dengan akhir pertandingan ini. Tampaknya tidak ada perbedaan antara pertandingan dalam contoh pertama, tetapi pengelompokan (/d) di sini berarti mencocokkan satu nomor. Menurut pemahaman saya sebelumnya, ini adalah 0, tetapi pemahaman ini salah. Karena seluruh pertandingan adalah pola serakah, mencocokkan sebanyak mungkin (/d) dalam grup akan menangkap hasil 1 dari pertandingan terakhir. Jika itu adalah pola non-greedy, itu akan cocok sesedikit mungkin.
var reg =/test (/d)+?/; var str = 'test001 test002' baru; console.log (str.match (reg)); // ["test001", "0", index: 4, input: "test001 test002 baru"]
Dengan cara ini, hasil pencocokan (/d) adalah 0. Meskipun masih ada hasil yang dapat dicocokkan nanti, di sini harus mencocokkan sesedikit mungkin
Pengelompokan yang tidak menangkap
Pengelompokan yang tidak menangkap berarti bahwa sepasang tanda kurung diperlukan di beberapa tempat, tetapi mereka tidak ingin itu menjadi kelompok penangkapan, yaitu, mereka tidak ingin kelompok ini diambil oleh fungsi seperti MacTh Exec. Biasanya, mereka didahului dengan tanda kurung (?: pola) sehingga menjadi kelompok yang tidak menangkap.
var reg =/test (?:/d)+/; var str = 'test001 test002' baru; console.log (str.match (reg)); // ["test001", indeks: 4, input: "test001 test002 baru"]
Dengan cara ini, tidak akan ada pencocokan konten dalam hasil pertandingan pertandingan, yang berarti bahwa item kedua hilang.
Artikel ini berfokus pada menjelaskan perbedaan antara (/d+) dan (/d)+, yang juga merupakan lubang yang saya ajukan hari ini. Jika ada kesalahan, jangan ragu untuk memperbaikinya.
Artikel di atas memiliki pemahaman yang mendalam tentang ekspresi reguler JS-kelompok adalah semua konten yang telah saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.