首页 >web前端 >js教程 >为什么我的 JavaScript 正则表达式无法提取坐标?

为什么我的 JavaScript 正则表达式无法提取坐标?

Barbara Streisand
Barbara Streisand原创
2024-12-04 19:01:18905浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn