Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Mengakses Subkumpulan yang Ditangkap dalam Ungkapan Biasa JavaScript?

Bagaimanakah Saya Mengakses Subkumpulan yang Ditangkap dalam Ungkapan Biasa JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 12:12:20897semak imbas

How Do I Access Captured Subgroups in JavaScript Regular Expressions?

Mengakses Kumpulan Dipadankan dalam Ungkapan Biasa JavaScript

Apabila memadankan rentetan dengan ungkapan biasa, adalah penting untuk memahami cara mendapatkan semula subkumpulan yang ditangkap . Dalam JavaScript, ini dicapai menggunakan menangkap kumpulan dalam ungkapan biasa.

Pertimbangkan contoh berikut:

var myString = "something format_abc"; // Target substring: "abc"

var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr); // [" format_abc", "abc"]
console.log(arr[1]); // undefined
console.log(arr[0]); // format_undefined

Sebab Output Tidak Ditakrifkan:

Walaupun ungkapan biasa sepadan dengan betul dengan subrentetan "abc", mengakses arr[1] mengembalikan tidak ditentukan kerana pencetakan yang salah dalam pernyataan konsol.log. console.log mentafsir rentetan %A sebagai pemegang tempat pemformatan dan cuba menggantikannya dengan parameter kedua, yang tidak ditentukan dalam kes ini.

Mengakses Kumpulan Dipadankan:

Untuk mengekstrak kumpulan yang dipadankan, gunakan arr[1]. Ini akan mengembalikan "abc" dengan betul.

Lelaran Lebih Berbilang Padanan (ES2020):

JavaScript 2020 memperkenalkan kaedah matchAll, yang menghasilkan iterator yang boleh digunakan untuk lelaran ke atas semua padanan dalam rentetan.

const string = "something format_abc";
const regexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
const matches = string.matchAll(regexp);

for (const match of matches) {
  console.log(match);
  console.log(match.index);
}

Pendekatan ini memberikan yang lebih bersih dan cara yang lebih intuitif untuk mengendalikan berbilang perlawanan.

Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Subkumpulan yang Ditangkap dalam Ungkapan Biasa 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