Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengendalikan Padanan Regex Berbilang Baris dalam JavaScript?

Bagaimana untuk Mengendalikan Padanan Regex Berbilang Baris dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 20:48:02877semak imbas

 How to Handle Multi-Line Regex Matching in JavaScript?

Padanan Regeks Berbilang Baris dengan JavaScript

Apabila memadankan rentetan yang merentangi berbilang baris, bendera /m JavaScript diketahui tidak mencukupi. Untuk menangani had ini, pendekatan yang lebih mantap diperlukan.

Penyelesaian

Penyelesaian melibatkan penggantian lalai . corak (titik), yang sepadan dengan mana-mana aksara tunggal, dengan [sS] sebaliknya. Berikut ialah contoh:

var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match(//gm); alert(arr); // "<pre class="brush:php;toolbar:false">... "

regex ini menggunakan metacharacter [sS], yang sepadan dengan mana-mana aksara, termasuk spasi putih dan aksara baris baharu. Akibatnya, regex boleh memadankan rentetan tanpa mengira pemisah barisnya.

Alternatif dan Pertimbangan Prestasi

Walaupun [sS] ialah penyelesaian yang boleh dipercayai, terdapat pendekatan alternatif :

  • [^]` (ditamatkan): Memadankan mana-mana aksara selain daripada pemisah baris.
  • (.|r|n) dan (.| [rn]): Kedua-dua corak ini juga boleh memadankan rentetan berbilang baris, tetapi ia jauh lebih perlahan mengikut penanda aras.

Amalan Terbaik

Untuk mengoptimumkan prestasi dan elakkan ketamakan yang tidak perlu, pertimbangkan amalan terbaik berikut:

  • Gunakan *? atau ? pengkuantiti bukan * atau untuk mengehadkan pemadanan kepada minimum yang diperlukan.
  • Elakkan menggunakan pengkuantiti posesif seperti atau * .

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Padanan Regex Berbilang Baris dalam 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