Mengapa Regex JavaScript Ini Tidak Berfungsi
Dalam kod JavaScript yang disediakan, regex var reg = new RegExp("/(s) *([0-9.-] )s*,s([0-9.-] )s*)/g"); gagal untuk memadankan rentetan input var polygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262) hasil.
Penggunaan Regex Salah
Ralat berpunca daripada dua penggunaan pembina RegExp yang salah:
Regex Literal
Untuk mengelakkan perangkap ini, adalah disyorkan untuk menggunakan regex literal, yang disertakan dalam garis miring ke hadapan dan melarikan diri mengikut sintaks ungkapan biasa:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Output Pengekstrakan
Sintaks polygons.match(reg) yang digunakan dalam kod mengembalikan tatasusunan subrentetan yang dipadankan. Walau bagaimanapun, memandangkan rentetan input hanya mengandungi subrentetan tunggal yang sepadan dengan corak, hasilnya ialah tatasusunan elemen tunggal:
["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]
Untuk mengekstrak pasangan lat/lon individu sebagai tatasusunan, kaedah padanan() hendaklah digantikan dengan exec():
[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);
Ini akan menghasilkan tatasusunan yang mengandungi padanan keseluruhan dan semua kumpulan yang ditangkap, membolehkan akses mudah ke lat/lon berpasangan.
Atas ialah kandungan terperinci Mengapa Koordinat Pemadanan Regex JavaScript Saya Tidak Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!