Madankan Contoh Tidak Dilampirkan dalam Petikan
Dalam soalan sebelumnya, adalah dicadangkan supaya memadankan semua kejadian regex sambil mengecualikan teks dalam petikan tidak boleh dilaksanakan. Walau bagaimanapun, had ini boleh diatasi menggunakan regex yang kompleks tetapi berkesan.
Kunci kepada regex ini ialah memerhatikan bahawa subrentetan berada di luar petikan jika bilangan petikan genap mendahuluinya. Ini boleh diwakili sebagai pernyataan pandangan ke hadapan berikut:
(?=([^"]*"[^"]*")*[^"]*$)
Penegasan ini memastikan bahawa teks sebelumnya mengandungi bilangan petikan genap diikuti dengan subrentetan semasa.
Untuk mengecualikan petikan yang dilepaskan , kita perlu mempertimbangkan garis miring ke belakang juga. Regex menjadi lebih kompleks sedikit:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
regex ini mula-mula mendahului mana-mana aksara bukan petikan (S). Apabila menemui garis serong ke belakang atau petikan, ia sama ada mengabaikan aksara seterusnya (jika ia adalah garis serong ke belakang) atau mara ke petikan tidak lari seterusnya sebaliknya.
Walaupun regex ini agak rumit, ia sepadan dengan semua keadaan dengan berkesan daripada regex yang tidak disertakan dalam petikan, membenarkan hasil yang diingini dalam kaedah split() dan replace() JavaScript.
Atas ialah kandungan terperinci Cara Memadankan Contoh Regex Di Luar Petikan dalam JavaScript: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!