为什么这个javascript regex不能工作?我正在做一个小的javascript方法,它接收一个点的列表,我必须读取这些点来在Google地图中创建一个多边形。我收到表格上的以下要点:(lat,long),(lat,long)因此,我做了以下正则表达式:\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)我用雷吉帕尔我收到的确切数据是:(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)它是有效的,那么为什么当我在javascript中有这段代码时,我会在结果中得到NULL呢?var polygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)";
var reg = new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g");var result = polygons.match(reg);我在执行时没有javascript错误(使用GoogleChrome的调试模式)。此代码托管在javascript函数中,该函数位于包含的JS文件中。在onload方法中调用此方法。我找了很多次了,但我找不到为什么这不管用。非常感谢!
2 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
RegExp
“定界符” /
不应该是表达式的一部分。 如果将表达式定义为字符串,则必须转义反斜杠,因为它是字符串中的转义字符。
RegExp
var reg = new RegExp("\\(\\s*([0-9.-]+)\\s*,\\s([0-9.-]+)\\s*\\)", "g");
RegExp
/(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]]);}
+
[ [25.774252, -80.190262], [18.466465, -66.118292], ...]
+
.
添加回答
举报
0/150
提交
取消