Akses Semua Tangkapan dalam Ungkapan Biasa JavaScript
Masalah timbul apabila cuba menangkap berbilang kumpulan dalam ungkapan biasa JavaScript, di mana hanya yang terakhir tangkapan dikekalkan.
Pertimbangkan contoh berikut:
"foo bar baz".match(/^(\s*\w+)+$/)
Daripada mengembalikan semua perlawanan seperti ["foo", "bar", "baz"], ia hanya mengembalikan ["baz "]. Tingkah laku ini berlaku kerana kumpulan penangkapan berulang menimpa tangkapan sebelumnya.
Untuk menyelesaikan masalah ini, pertimbangkan pendekatan alternatif:
Sebagai contoh, untuk menangkap urutan perkataan yang disertakan dalam < > dan bahagikannya pada ;, pertimbangkan contoh berikut:
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(";")); }
Reex ini membahagikan urutan yang ditangkap kepada perkataan individu.
Rujukan:
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Kumpulan dalam Ungkapan Biasa JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!