Bagaimana untuk Menangkap Berbilang Kumpulan dalam Ungkapan Biasa JavaScript?

Barbara Streisand
Lepaskan: 2024-11-11 08:30:03
asal
967 orang telah melayarinya

How to Capture Multiple Groups in JavaScript Regular Expressions?

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+)+$/)
Salin selepas log masuk

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:

  • Pisah pada Pembatas: Jika boleh, belah rentetan pada pembatas yang diketahui dan bukannya menggunakan kumpulan penangkapan berulang.
  • Regex dengan g Bendera: Gunakan ungkapan biasa dengan bendera g untuk mengulangi semua padanan. Ambil perhatian bahawa ini mungkin bukan setara yang tepat dengan kumpulan menangkap berulang.
  • Padanan Berbilang Peringkat: Lakukan berbilang padanan regex untuk menangkap corak tertentu dan kemudian memisahkan atau memprosesnya lagi.

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(";"));
}
Salin selepas log masuk

Reex ini membahagikan urutan yang ditangkap kepada perkataan individu.

Rujukan:

  • [Maklumat Ungkapan Biasa: Mengulang lwn Menangkap Kumpulan](https://www.regular-expressions.info/repeating-a-capturing-group-vs-capturing-a-repeating-group)

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan