Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?

Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?

Patricia Arquette
Lepaskan: 2024-12-06 05:19:10
asal
965 orang telah melayarinya

How Can I Use Regex to Find Overlapping Matches in a String?

Padanan Rentetan Bertindih dengan Regex

Dalam rentetan "12345," menggunakan ".match(/d{3}/g)" sebaiknya mengembalikan tiga padanan: "123," "234," dan "345." Walau bagaimanapun, hanya satu perlawanan ("123") diperoleh.

Sebab:

Bendera global "g" dalam regex menggunakan tiga digit dan memajukan indeks ke kedudukan selepas perlawanan pertama. Ini bermakna apabila regex cuba memadankan subrentetan seterusnya, indeks sudah berada pada kedudukan 3, dengan berkesan melangkau padanan bertindih yang tinggal.

Penyelesaian: Penegasan Lebar Sifar

Penegasan lebar sifar, khususnya pandangan positif dengan kumpulan penangkap, boleh digunakan untuk memadankan semua kedudukan dalam rentetan input. Teknik ini melibatkan:

  • Menguji setiap kedudukan menggunakan penegasan pandang ke hadapan.
  • Memajukan sifat RegExp.lastIndex secara manual untuk mengelakkan gelung tak terhingga.

Contoh dalam JavaScript:

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?. 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