Mengapa JavaScript Regex Ini Tidak Berfungsi?
Cuba untuk mengekstrak mata daripada rentetan dengan ungkapan biasa, pengguna menemui null hasil. Regex yang disediakan, "(s([0-9.-] )s,s([0-9.-] )s*)", sepadan dengan titik yang disertakan dalam kurungan dan dipisahkan dengan koma. Walau bagaimanapun, apabila digunakan pada rentetan seperti "(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)", ia gagal.
Resolusi
Punca utama ialah penggunaan pembina RegExp yang salah. Untuk menggunakan literal regex, yang lebih mudah dan kurang terdedah kepada ralat, gantikan "RegExp baharu" dengan "/". Tambahan pula, pengubah suai diluluskan sebagai hujah kedua:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Nota tentang Output
match() mengembalikan tatasusunan rentetan yang sepadan, yang mungkin tidak berguna untuk mengekstrak nilai berangka. Sebaliknya, exec() hendaklah digunakan untuk mengekstrak padanan individu:
var result, points = []; while ((result = reg.exec(polygons)) !== null) { points.push([+result[1], +result[2]]); }
Ini akan mencipta tatasusunan yang mengandungi koordinat sebagai nombor. Sebagai alternatif, jika rentetan diutamakan, tinggalkan tambah pertama ( ).
Atas ialah kandungan terperinci Mengapa Regex JavaScript Saya Gagal Mengekstrak Koordinat daripada String?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!