為什麼這個JavaScript 正規表示式不起作用
在提供的JavaScript 程式碼中,正規表示式var reg = new Regp(" /(s *([0-9.-])s*,s([0-9.-])s*)/g");無法符合輸入字串var Polyps="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)";,導致 null
正規表示式用法不正確
錯誤源自於 RegExp建構函數的兩種錯誤用法:
正規表示式文字
為了避免這些陷阱,建議使用正規表示式文字,它包含在正斜杠中並根據正則表達式法:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
輸出擷取
程式碼中使用的polygons.match(reg)語法傳回符合子字串的陣列。但是,由於輸入字串僅包含與模式匹配的單一子字串,因此結果是單元素數組:
["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]
要將各個緯度/經度對提取為數組,請使用match() 方法應替換為exec():
[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);
這將產生一個包含整體匹配和所有捕獲組的數組,以便輕鬆存取緯度/經度成對。
以上是為什麼我的 JavaScript 正規表示式無法正確匹配座標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!