Menangkap Kumpulan Arbitrari dalam JavaScript Regexp
Apabila menggunakan menangkap kumpulan dalam ungkapan biasa JavaScript, adalah penting untuk memahami batasannya. Secara lalai, hanya tangkapan terakhir kumpulan berulang disimpan, walaupun kumpulan itu bersarang.
Contoh: Kumpulan Tangkap Bersarang
Pertimbangkan ungkapan biasa berikut:
/^(\s*\w+)+$/
Keluaran yang dijangkakan:
["foo bar baz", "foo", " bar", " baz"]
Keluaran sebenar:
["foo bar baz", " baz"]
Dalam kes ini, hanya kumpulan terakhir yang ditangkap, " baz", dikembalikan. Ini kerana JavaScript hanya mengekalkan tangkapan terakhir untuk setiap kumpulan berulang.
Pilihan untuk Menangkap Berbilang Kumpulan
Untuk mengatasi had ini, beberapa pilihan tersedia:
Contoh: Exec Gelung dan Pemisahan
Berikut ialah contoh menggunakan gelung exec untuk menangkap dan membahagikan kumpulan bersarang:
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
Dalam contoh ini, kumpulan bersarang ditangkap sebagai kumpulan 1, yang kemudiannya dipecahkan pada pembatas koma bernoktah.
Soalan Berkaitan
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Kumpulan dalam Regex JavaScript Berulang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!