Kemarin saya menemui kendala dalam mencocokkan dua ekspresi reguler saat melakukan mergeCSS, yang juga memakan banyak waktu. Akhirnya, dengan bantuan teman sekelas CE di CSS Forest Group, saya menyelesaikan dua ekspresi reguler ini secara khusus dan mungkin menggunakannya di masa depan tiba.
Yang pertama adalah masalah pencocokan jalur gambar. String yang akan diproses adalah:
Berikut isi kutipannya: |
Yang awalnya saya tulis adalah:
Berikut isi kutipannya: |
Hasilnya adalah:
Berikut isi kutipannya: |
Seperti yang Anda lihat, hasil mencocokkan dua gambar menjadi satu tidak seperti yang Anda harapkan. Ubah menjadi pencocokan malas sebagai berikut:
Berikut isi kutipannya: |
Hasilnya adalah:
Berikut isi kutipannya: url(demo.jpg); |
Dua gambar dicocokkan, yang merupakan hasil yang diinginkan. :)
Masalah kedua adalah penggunaan variabel dalam ekspresi reguler. Mari kita jelaskan secara singkat mengapa menambahkan variabel juga bisa menjadi masalah. Pertama-tama mari kita lihat deskripsi objek RegExp dan metode replace() :
Berikut isi kutipannya: |
Semua konten di antara "/" akan diperlakukan sebagai ekspresi reguler, sehingga nama variabel akan diperlakukan sebagai string. Tanpa menambahkan "/"? Tidak apa-apa, tetapi jika Anda tidak menambahkan "/", Anda tidak dapat menentukan mode pencocokan, dan Anda hanya dapat mencocokkan yang pertama.
Berikut isi kutipannya: Objek RegExp baru dapat dihasilkan melalui objek RegExp, dengan mode dan flag yang ditentukan. |
Kemudian:
Berikut isi kutipannya:
|
Yang perlu diperhatikan disini adalah menggunakan "\" untuk escape, karena
Berikut isi kutipannya: Jika pola argumen adalah ekspresi reguler dan bukan string, konstruktor RegExp() akan membuat objek RegExp baru dengan pola dan tanda yang sama seperti RegExp yang ditentukan. |
Selama proses ini "\" akan diubah menjadi "", yaitu hasil di atas adalah:
Berikut isi kutipannya:
|