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;
正規表示式輸出分析:
為了更了解正規表示式,可以使用控制台輸出其模式:
/(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中文網其他相關文章!