Adakah terdapat cara dalam JS regex API untuk menulis semula input supaya hanya kumpulan yang sepadan disimpan (tertib), tetapi ia berfungsi dengan regex arbitrari (termasuk regex tanpa menangkap kumpulan)?
Sebagai contoh untuk ungkapan biasa /abc([D-F]+)gh([I-K]+)/
和输入 abcFEEDghKIKI
,我想要输出 "FEEDKIKI"
, kerana ini adalah bahagian yang ditangkap.
Walau bagaimanapun, regex input juga boleh menjadi /([a-zA-Z]+)/
yang hanya akan mengembalikan teks asal untuk input yang sama.
Jika ungkapan biasa ialah /([0-9]+)/
maka rentetan kosong akan dikembalikan.
Reex akan dijana oleh alat, tetapi terdapat banyak regex dan saya tidak mahu kod kes khas untuk bilangan kumpulan penangkapan yang berbeza.
Sebaik-baiknya saya juga boleh mengakses tempoh perlawanan dalam input entah bagaimana.
Saya mengandaikan terdapat beberapa cara untuk melakukan ini melalui panggilan balik yang dihantar kepada replace()
(atau serupa), tetapi tidak jelas bagaimana/jika mungkin untuk mendapatkan indeks kumpulan penangkap (atau jika perlu dalam JS).
Pada asasnya, saya cuba meniru perkara yang boleh anda lakukan melalui MatchResult
API di Java, di mana kumpulan boleh diulang dan indeks mula/akhir kumpulan penangkap boleh ditemui. < /p>
Terima kasih terlebih dahulu!
Temui: Bagaimana untuk mengakses ungkapan biasa JavaScript? Nampaknya (sekurang-kurangnya pada mulanya) menggunakan
exec()
akan melakukan apa yang saya mahu.