首頁 > web前端 > js教程 > 為什麼我的 JavaScript 正規表示式無法正確匹配座標?

為什麼我的 JavaScript 正規表示式無法正確匹配座標?

Susan Sarandon
發布: 2024-12-13 02:14:12
原創
520 人瀏覽過

Why Isn't My JavaScript Regex Matching Coordinates Correctly?

為什麼這個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建構函數的兩種錯誤用法:

  1. 分隔符: 正斜線 (/) 不應包含在正規表示式字串中。相反,請使用 /(s*([0-9.-] )s*,s([0-9.-] )s*)/g 語法來定義以 '/' 作為分隔符號的表達式。
  2. 轉義反斜線: 如果使用正規表示式字串,反斜線字元必須用另一個字元轉義以確保其字面表示,因為它是為轉義序列保留的JavaScript 字串。

正規表示式文字

為了避免這些陷阱,建議使用正規表示式文字,它包含在正斜杠中並根據正則表達式法:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板