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

Bagaimana untuk Menangkap Berbilang Kejadian Kumpulan dalam Regex JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 03:16:03402semak imbas

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+)+$/)

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

/<(\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!

Kenyataan:
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