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

為什麼我的 JavaScript 正規表示式無法提取座標?

Barbara Streisand
發布: 2024-12-04 19:01:18
原創
953 人瀏覽過

Why Are My JavaScript Regexes Failing to Extract Coordinates?

JavaScript 正規表示式失敗分析

當遇到JavaScript 正規表示式的null 結果時,深入研究表達式背後的複雜性非常重要。讓我們檢查為什麼從逗號分隔的字串中提取座標的特定正規表示式沒有產生匹配項:

正規表示式構造缺陷:

有問題的正規表示式定義為:

new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g")
登入後複製

相反,正規表示式文字應該是使用:

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
登入後複製
  1. 分隔符號不是表達式的一部分,不應包含在內。
  2. 正規表示式文字較方便,有助於避免潛在的反斜線問題。

正規表示式輸出分析:

為了更了解正規表示式,可以使用控制台輸出其模式:

/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g
登入後複製

這表示表達式將符合文字「s」、「g」和括號,這不是預期的行為。

陣列輸出注意事項:

值得注意的是match() 傳回一個陣列符合數:

["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]
登入後複製

要擷取單一數字,應使用exec():

["(25.774252, -80.190262)", "25.774252", "-80.190262"]
登入後複製

然後可以使用一元加運算子 ( ) 將字串轉換為數字.

完成程式碼:

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]]);
}
登入後複製

此程式碼將建立一個陣列數組,其中包含擷取的數字座標。

以上是為什麼我的 JavaScript 正規表示式無法提取座標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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