Rumah >hujung hadapan web >tutorial js >Mengapa Regex JavaScript Saya Gagal Mengekstrak Koordinat?
Analisis Kegagalan Regex JavaScript
Apabila menemui hasil nol daripada regeks JavaScript, adalah penting untuk menyelidiki selok-belok di sebalik ungkapan. Mari kita periksa mengapa regex khusus untuk mengekstrak koordinat daripada rentetan yang dipisahkan koma tidak menghasilkan padanan:
Kecacatan pembinaan regex:
regex yang dimaksudkan ditakrifkan sebagai:
new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g")
Sebaliknya, literal regex sepatutnya digunakan:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Analisis Output Regex:
Untuk lebih memahami regex, seseorang boleh mengeluarkan coraknya menggunakan konsol:
/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g
Ini mendedahkan bahawa ungkapan itu akan memadankan literal 's', 'g' dan parens secara literal, yang bukan tingkah laku yang dimaksudkan.
Pertimbangan Output Tatasusunan:
Adalah penting untuk ambil perhatian bahawa match() mengembalikan tatasusunan padanan:
["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]
Untuk mengekstrak nombor individu, exec() hendaklah digunakan sebaliknya:
["(25.774252, -80.190262)", "25.774252", "-80.190262"]
Operator tambah unari ( ) kemudiannya boleh digunakan untuk menukar rentetan kepada nombor.
Kod Lengkap:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g; var result, points = []; while((result = reg.exec(polygons)) !== null) { points.push([+result[1], +result[2]]); }
Kod ini akan mencipta tatasusunan tatasusunan yang mengandungi koordinat yang diekstrak sebagai nombor.
Atas ialah kandungan terperinci Mengapa Regex JavaScript Saya Gagal Mengekstrak Koordinat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!