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)

但这只是给了我所有的数字。

非常感谢帮助!

4

2 回答 2

1

您可以尝试使用以下正则表达式

/\d+\.\d{7,}/g

这假设:

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

示例(JSFiddle):

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

我选择 7 的原因是因为样本中的其他数字有 6,所以排除了它们。如果您知道坐标始终具有固定的小数位数,那么您可以只使用该特定数字而无需,像这样:

/\s+\.\d{10}/g
于 2012-04-07T16:44:27.367 回答
1

如果您的字符串正在str使用此正则表达式。

var coordinates = decodeURIComponent(str).match(/([\d.]{10,})/g); 

http://jsfiddle.net/CHfcT/

于 2012-04-07T16:43:38.257 回答