Akses Kumpulan Dipadankan dalam Ungkapan Biasa JavaScript
Apabila menggunakan ungkapan biasa untuk memadankan corak dalam rentetan, selalunya wajar untuk mengakses bahagian tertentu daripada teks dipadankan. JavaScript menyediakan beberapa cara untuk melakukannya.
Dalam contoh anda, anda menggunakan ungkapan biasa dengan kurungan dengan betul untuk menangkap sebahagian daripada rentetan. Walau bagaimanapun, isu yang anda hadapi bukan dengan regex itu sendiri tetapi dengan cara anda mengakses kumpulan yang dipadankan.
Mengakses Kumpulan dengan .exec()
The . kaedah exec() mengembalikan tatasusunan yang mengandungi keseluruhan rentetan yang dipadankan sebagai elemen pertama, diikuti oleh mana-mana kumpulan yang ditangkap. Untuk mengakses kumpulan pertama yang ditangkap (bahagian "abc" dalam contoh anda), anda akan menggunakan arr[1]:
let myString = "something format_abc"; let arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString); console.log(arr[1]); // Prints: abc
Menggunakan Kumpulan Tangkapan Bernama
Anda juga boleh menamakan kumpulan tangkapan anda menggunakan sintaks ungkapan biasa seperti (?
let myString = "something format_abc"; let arr = /(?:^|\s)format_(?<text>.*?)(?:\s|$)/.exec(myString); console.log(arr.groups.text); // Prints: abc
Sintaks Gantian dengan Kumpulan Tangkapan Bernama:
Dalam ECMAScript 2018, anda boleh menggunakan sedikit berbeza sintaks untuk kumpulan tangkap bernama, melampirkan nama kumpulan dalam kerinting pendakap:
let myString = "something format_abc"; let arr = /(?:^|\s)format_({text}.*?)(?:\s|$)/.exec(myString); console.log(arr.groups.text); // Prints: abc
Memadankan Berbilang Kejadian dengan .matchAll()
Kaedah .matchAll() telah diperkenalkan dalam ECMAScript 2020 dan menyediakan API berasaskan lelaran untuk memadankan berbilang kejadian corak dalam rentetan. Ia mengembalikan iterator yang menghasilkan keputusan padanan sebagai tatasusunan untuk setiap perlawanan dan anda boleh mengakses kumpulan yang ditangkap dalam setiap keputusan.
Untuk menggunakan .matchAll() dalam contoh anda:
let myString = "something format_abc and something format_xyz"; let matches = myString.matchAll(/(?:^|\s)format_(.*?)(?:\s|$)/g); for (let match of matches) { console.log(match[1]); // Prints: abc, then xyz }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kumpulan Dipadankan dalam Ungkapan Biasa JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!