为什么这个 JavaScript 正则表达式不起作用?
尝试使用正则表达式从字符串中提取点,用户遇到了 null结果。提供的正则表达式“(s([0-9.-] )s,s([0-9.-] )s*)”匹配括号内并用逗号分隔的点。但是,当应用于“(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)”这样的字符串时,它失败。
解决方法
根本原因是 RegExp 构造函数的错误使用。要使用更方便且不易出错的正则表达式文字,请将“new RegExp”替换为“/”。此外,修饰符作为第二个参数传递:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
输出注意事项
match() 返回一个匹配字符串数组,这对于提取数值。相反,应该使用 exec() 来提取单个匹配项:
var result, points = []; while ((result = reg.exec(polygons)) !== null) { points.push([+result[1], +result[2]]); }
这将创建一个包含数字坐标的数组。或者,如果首选字符串,请省略一元加号 ( )。
以上是为什么我的 JavaScript 正则表达式无法从字符串中提取坐标?的详细内容。更多信息请关注PHP中文网其他相关文章!