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

时间:2012-04-07 16:27:55

标签: javascript regex

我正在尝试从字符串中提取特定数字,但我不确定如何执行它。

字符串的格式为:

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 个答案:

答案 0 :(得分:1)

如果您的字符串位于str,请使用此正则表达式。

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

http://jsfiddle.net/CHfcT/

答案 1 :(得分:1)

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

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

这假定:

  • 标记坐标在点
  • 后总是有7个或更多数字
  • 字符串中没有其他部分包含类似的图案,点后面有多于7个数字

示例(JSFiddle):

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

我选择7的原因是因为样本中的其他数字有6个,因此将它们排除在外。如果您知道坐标始终具有固定的小数位数,那么您可以使用该特定数字而不使用,,如下所示:

/\s+\.\d{10}/g