Memahami Malfungsi Regex JavaScript
Dalam JavaScript, pembangun menghadapi masalah dengan ungkapan biasa (regex) yang direka untuk mengekstrak mata daripada rentetan yang diberikan. Corak regex cuba memadankan pasangan koordinat dalam bentuk (lat, panjang), tetapi ia gagal menghasilkan sebarang hasil apabila digunakan bersama dengan rentetan ujian.
Pembangun telah menguji corak regex dengan betul dalam RegexPal, yang membuahkan hasil yang diharapkan. Walau bagaimanapun, apabila corak itu dilaksanakan dalam JavaScript, ia mengembalikan null dan bukannya tatasusunan padanan yang dijangkakan.
Penyelesaian: Melarikan Diri Segaris Belakang dan Menggunakan Regex Literal
Kepada menyelesaikan isu ini, pembangun perlu membuat dua pelarasan. Pertama, apabila menggunakan objek RegExp dalam JavaScript, garis miring ke hadapan (/) yang mengehadkan corak regex tidak seharusnya disertakan sebagai sebahagian daripada ungkapan.
Kedua, aksara garis miring ke belakang () mempunyai makna istimewa dalam rentetan JavaScript . Oleh itu, apabila mentakrifkan corak regex sebagai rentetan, setiap garis miring ke belakang mesti dilepaskan menggunakan garis miring ke belakang yang lain.
Sebagai alternatif, pembangun boleh menggunakan literal regex, yang merupakan pilihan yang lebih ringkas dan mudah. Literal regex dilambangkan dengan melampirkan corak dalam garis miring ke hadapan, seperti:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Memahami Corak Regex
Corak regex yang disediakan bertujuan untuk memadankan pasangan koordinat disertakan dalam kurungan, dengan ruang kosong pilihan sebelum dan selepas setiap koordinat. Corak terdiri daripada tiga kumpulan tangkapan:
Pengubah suai g memastikan bahawa corak akan mencari semua kemunculan corak dalam rentetan input.
Mengekstrak Koordinat Menggunakan .exec()
Dalam JavaScript, kaedah .match() mengembalikan tatasusunan rentetan yang mewakili keseluruhan bahagian rentetan input yang dipadankan, bagaimanapun, untuk kes penggunaan khusus ini, mengekstrak pasangan koordinat individu sebaliknya memerlukan kaedah .exec().
Kaedah .exec() mengembalikan tatasusunan nilai, di mana elemen pertama ialah keseluruhan subrentetan yang dipadankan dan elemen berikutnya ialah yang ditangkap kumpulan.
Untuk mengekstrak koordinat, pembangun boleh berulang kali memanggil .exec() sehingga tiada lagi padanan. Setiap kali, elemen kedua dan ketiga tatasusunan yang dikembalikan akan mengandungi koordinat latitud dan longitud, masing-masing.
Contoh Pelaksanaan
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Kod ini akan mengekstrak pasangan koordinat daripada rentetan input dan menyimpannya dalam tatasusunan titik sebagai tatasusunan, dengan setiap tatasusunan dalam mengandungi koordinat latitud dan longitud.
Atas ialah kandungan terperinci Mengapa Regex JavaScript Saya Gagal Mengekstrak Koordinat, dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!