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.
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
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
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/;
var regex2 = /foo/; regex1 === regex2; // true
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()var regex1 = /foo/;
Kita boleh menggunakan RegExp() pembina untuk mencipta ungkapan biasa baharu yang serupa dengannya -
var regex2 = new RegExp(regex1); regex1 === regex2; // true
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.
Satu kelemahan pengklonan ungkapan biasa ialah ia menjadikan kod lebih kompleks. Contohnya, jika anda mempunyai ungkapan biasa seperti ini -
var regex1 = /foo/;
var regex2 = new RegExp(regex1, 'i');
Ini lebih kompleks daripada sekadar mencipta ungkapan biasa baharu dengan set bendera tidak sensitif huruf besar-besaran -
var regex2 = /foo/i;
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!