Bagaimana untuk mengklon ungkapan biasa yang diberikan dalam JavaScript?

WBOY
Lepaskan: 2023-09-17 17:25:02
ke hadapan
997 orang telah melayarinya

Sokongan ungkapan biasa JavaScript secara meluas dianggap sebagai salah satu yang terbaik di dunia, tetapi ia mempunyai satu kelemahan: tiada cara terbina dalam untuk mengklonkan Mod ungkapan biasa. Ini boleh menjadi masalah apabila anda perlu mencipta ungkapan biasa baharu yang serupa dengan ungkapan biasa sedia ada tetapi dengan beberapa perubahan kecil.

如何在 JavaScript 中克隆给定的正则表达式?Masalahnya ialah ungkapan biasa ialah objek, jadi ia tidak boleh disalin dengan hanya memberikan satu objek kepada yang lain. Pertimbangkan kod berikut -

var regex1 = /foo/;
var regex2 = regex1;
regex2 === regex1; // true
Salin selepas log masuk

Dalam kod ini, kami mencipta dua ungkapan biasa yang serupa. Tetapi bagaimana jika kita ingin membuat perubahan kecil kepada salah satu daripada mereka?

regex2 = /bar/;
regex1 === regex2; // false
Salin selepas log masuk

Kini kedua-dua ungkapan biasa ini berbeza, walaupun ia bermula sebagai salinan antara satu sama lain. Ini kerana ungkapan biasa boleh berubah: ia boleh ditukar selepas ia dibuat.

Klon menggunakan ungkapan biasa

Salah satu cara untuk mengklon ungkapan biasa ialah dengan mencipta literal ungkapan biasa baharu yang serupa dengan literal ungkapan biasa sedia ada. Sebagai contoh, jika kita mempunyai ungkapan biasa seperti ini -

var regex1 = /foo/;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kita boleh mencipta ungkapan biasa baharu yang serupa dengannya menggunakan ungkapan biasa literal -

var regex2 = /foo/;
regex1 === regex2; // true
Salin selepas log masuk

Kaedah ini mudah dan mudah, tetapi hanya berfungsi jika ungkapan biasa ialah literal (iaitu tidak dibuat menggunakan pembina

RegExp()

baharu).

Gunakan pembina RegExp() untuk mengklon ungkapan biasa Cara lain untuk mengklon ungkapan biasa ialah menggunakan

RegExp()

pembina. Ini membolehkan kami mencipta ungkapan biasa baharu berdasarkan ungkapan biasa sedia ada tetapi dengan beberapa perubahan. Sebagai contoh, jika kita mempunyai ungkapan biasa seperti ini -

var regex1 = /foo/;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kita boleh menggunakan RegExp() pembina untuk mencipta ungkapan biasa baharu yang serupa dengannya -

var regex2 = new RegExp(regex1);
regex1 === regex2; // true
Salin selepas log masuk

Kaedah ini lebih rumit sedikit daripada yang sebelumnya, tetapi ia mempunyai kelebihan kerana dapat mengklonkan ungkapan biasa bukan teks. Mengapa kita mengklon ungkapan biasa?

Pengklonan ungkapan biasa mempunyai beberapa faedah. Pertama, ia menjimatkan masa anda jika anda perlu mencipta banyak ungkapan biasa yang serupa. Kedua, ia membantu anda mengelakkan ralat jika anda perlu membuat perubahan kecil pada ungkapan biasa sedia ada. Akhir sekali, ia boleh menjadikan kod anda lebih mudah dibaca dengan memberikan ungkapan biasa nama deskriptif.

Kelemahan pengklonan ungkapan biasa

Satu kelemahan pengklonan ungkapan biasa ialah ia menjadikan kod lebih kompleks. Contohnya, jika anda mempunyai ungkapan biasa seperti ini -

var regex1 = /foo/;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

dan anda ingin mencipta ungkapan biasa baharu yang serupa dengannya tetapi dengan set bendera tidak sensitif huruf besar, anda perlu melakukan ini -

var regex2 = new RegExp(regex1, 'i');
Salin selepas log masuk

Ini lebih kompleks daripada sekadar mencipta ungkapan biasa baharu dengan set bendera tidak sensitif huruf besar-besaran -

var regex2 = /foo/i;
Salin selepas log masuk

Kesimpulannya, pengklonan ungkapan biasa boleh menjadi alat yang berguna, tetapi ia datang dengan beberapa pertukaran. Ia boleh menjadikan kod anda lebih kompleks, tetapi ia juga boleh menjimatkan masa anda dan membantu anda mengelakkan ralat.

Atas ialah kandungan terperinci Bagaimana untuk mengklon ungkapan biasa yang diberikan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!