Regex Look Behind Alternative dalam JavaScript
Masalah:
JavaScript tidak menawarkan kaedah asli untuk melihat regex di belakang. Akibatnya, ungkapan biasa berikut, yang berfungsi dengan berkesan dalam pelaksanaan lain, gagal dalam JavaScript:
(?<!filename)\.js$
Rex reges ini bertujuan untuk memadankan sambungan ".js" di hujung rentetan, tetapi hanya jika ia adalah tidak didahului oleh "nama fail.js."
Penyelesaian:
Satu pendekatan untuk mensimulasikan pandangan regex di belakang dalam JavaScript melibatkan penggunaan fungsi pembantu. Walau bagaimanapun, regex alternatif yang lebih mudah mencapai hasil yang diingini:
^(?:(?!filename.js$).)*.js$
Penjelasan:
regex ini menggunakan pandangan negatif ke hadapan untuk mengesahkan bahawa setiap aksara dalam rentetan melakukan tidak sepadan dengan ungkapan "nama fail.js" diikuti dengan penghujung rentetan. Hanya selepas itu watak itu boleh sepadan dengan regex. Di bawah ialah pecahan regex:
^ # Start of string (?: # Try to match the following: (?! # First assert that we can't match the following: filename.js # filename.js $ # and end-of-string ) # End of negative lookahead . # Match any character )* # Repeat as needed .js # Match .js $ # End of string
Penyelesaian Diperbaiki:
Kaedah yang lebih cekap untuk mencapai hasil yang sama ialah menggunakan regex berikut:
^(?!.*filename.js$).*\.js$
Reteks ini menegaskan bahawa keseluruhan rentetan tidak boleh mengandungi "nama fail.js" dan seterusnya sepadan dengan mana-mana rentetan yang berakhir dengan ".js."
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi Regex Look Behind dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!