JavaScript - 从字符串中提取特定数字

3
我将尝试从字符串中提取特定数字,但不确定如何执行。
该字符串的格式为:
center=43.571464,7.129565&zoom=12&size=480x225&markers=color:red%7Clabel:1%7C43.580293713725936,7.115145444335894&markers=color:red%7Clabel:2%7C43.56512073056565,7.121668576660113&sensor=false 

我需要的数组是靠近末尾的标记坐标,具体而言:
[43.580293713725936,7.115145444335894,43.56512073056565,7.121668576660113]

我以为我可以通过它们的精度(15)挑选出这些数字,但我不知道这是否是最好的方法。当涉及到使用正则表达式时,我是个外行。现在,我能做到的最好的方法是:

str.match(/[-+]?[0-9]*\.?[0-9]+/g)

但这只是给我所有的数字。
非常感谢您的帮助!
2个回答

1
如果您的字符串在str中,请使用此正则表达式。
var coordinates = decodeURIComponent(str).match(/([\d.]{10,})/g); 

http://jsfiddle.net/CHfcT/


1
你可以尝试使用以下正则表达式。
/\d+\.\d{7,}/g

这里假设:

  • 标记坐标始终在小数点后有7个或更多数字
  • 字符串的其他部分不包含类似模式,其小数点后有超过7个数字

示例(JSFiddle):

str.match(/\d+\.\d{7,}/g);

我选择7的原因是因为样本中的其他数字都是6,所以它们被排除了。如果您知道坐标始终具有固定数量的小数位,则可以直接使用该特定数字而不需要使用,如下所示:
/\s+\.\d{10}/g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接