Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menangkap Berbilang Kejadian Kumpulan dalam Regex JavaScript?

Bagaimana untuk Menangkap Berbilang Kejadian Kumpulan dalam Regex JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-11 03:16:03
asal
479 orang telah melayarinya

How to Capture Multiple Occurrences of a Group in JavaScript Regex?

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

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"]
Salin selepas log masuk

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 , gunakan corak berikut:

/<(\w+(;\w+)*)>/g
Salin selepas log masuk

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

Output:

["c", "d", "e", "f"]
["xx", "yy", "zz"]
Salin selepas log masuk

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!

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