为什么这个 JavaScript 正则表达式不起作用
在提供的 JavaScript 代码中,正则表达式 var reg = new RegExp("/(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中文网其他相关文章!