Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menggunakan Regex dengan Berkesan dalam JavaScript untuk Pemadanan Berbilang Baris?

Bagaimana untuk Menggunakan Regex dengan Berkesan dalam JavaScript untuk Pemadanan Berbilang Baris?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 05:34:02294semak imbas

How to Effectively Use Regex in JavaScript for Multiline Matching?

Menggunakan Regex dalam JavaScript Merentasi Pelbagai Baris

Dalam JavaScript, bendera 'm', yang sepatutnya direka untuk padanan berbilang baris, gagal menangkap kandungan merentas baris baharu. Untuk menyelesaikan masalah ini, penyelesaian yang lebih mantap diperlukan.

Kuncinya ialah menggunakan sama ada '[sS]' atau '[^]' sebagai titik berbilang baris. Corak ini sepadan dengan mana-mana watak, termasuk baris baharu. Pendekatan ini berkesan menangkap kandungan tanpa mengira pengedarannya melalui berbilang baris.

Contoh:

var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match( /
[\s\S]*?<\/pre>/gm );
console.log(arr); // Outputs: `<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
`

Alternatif Kurang Samar:

Walaupun penyelesaian yang disediakan berkesan, pendekatan yang kurang rumit boleh dicapai dengan menggantikan '[sS]' dengan '.*?'. Pengkuantiti ini memadankan sebarang bilangan aksara (termasuk baris baharu) secara tidak tamak, menghasilkan padanan yang lebih cekap dan disasarkan.

var arr = ss.match( /<pre class="brush:php;toolbar:false">.*?<\/pre>/gm );
console.log(arr); // Outputs: `<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
`

Petua:

  • Elakkan ketamakan yang berlebihan dengan menggunakan pengkuantiti bukan tamak seperti '*?' atau ' ?' bila-bila boleh.
  • Tanda aras menunjukkan bahawa '[^]' menawarkan prestasi unggul berbanding kaedah lain.
  • Walaupun '[^]' ditamatkan, ia kekal sebagai penyelesaian yang berkesan dalam persekitaran yang lebih lama.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Regex dengan Berkesan dalam JavaScript untuk Pemadanan Berbilang Baris?. 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