Rumah > Artikel > hujung hadapan web > Bagaimana untuk Menangkap Berbilang Kejadian Kumpulan dalam Regex JavaScript?
Menangkap Kumpulan Arbitrari dalam Regex JavaScript
Apabila menggunakan ungkapan biasa untuk menangkap kumpulan, adalah penting untuk memahami batasan yang dikenakan oleh corak tertentu. Walaupun kumpulan tangkapan berulang boleh digunakan untuk memadankan berbilang kejadian, hanya tangkapan terakhir dikekalkan dalam JavaScript.
Pertimbangkan contoh berikut:
"foo bar baz".match(/^(\s*\w+)+$/)
Dalam corak ini, kumpulan tangkapan (s *w ) diulang menggunakan pengkuantiti. Walau bagaimanapun, enjin ungkapan biasa JavaScript hanya menangkap kejadian terakhir, bukan padanan pertengahan. Hasilnya, outputnya ialah:
["foo bar baz", " baz"]
Untuk mendapatkan semula semua padanan yang ditangkap, pertimbangkan strategi berikut:
Berpisah pada Pembatas:
Jika boleh, belah rentetan pada pembatas yang dipratentukan dan bukannya menggunakan ungkapan biasa yang kompleks.
Gelung Exec dengan Kumpulan Berulang:
Buat corak yang menangkap kumpulan berulang dan kemudian gunakan gelung exec untuk melelaran melalui padanan. Setelah kumpulan lengkap ditangkap, bahagikannya pada pembatas dalam.
Padanan Berbilang Peringkat:
Pecahkan masalah kepada beberapa peringkat dengan menangkap kumpulan berulang dalam satu corak dan kemudian gunakan corak seterusnya untuk mengekstrak individu padanan.
Contoh:
Untuk memadankan dan membelah rentetan
/<(\w+(;\w+)*)>/g
Corak ini menangkap keseluruhan kumpulan berulang dalam Kumpulan 1. Kemudian, dalam gelung exec, belah rentetan yang ditangkap menggunakan ; pembatas.
var text = "a;b;;g;h;i; ;j;k; "; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { console.log(match[1].split(";")); }
Output:
["c", "d", "e", "f"] ["xx", "yy", "zz"]
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Kejadian Kumpulan dalam Regex JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!