0

我有一个示例字符串:

iasfa345.12isnhf 纬度:46.7132N,经度:116.997W EFONA345.55SDF

我需要从中提取 116.997 和 46.7132。

我只设法得到:

x.match(/Long: .{7}/g)
x.match(/Lat: .{6}/g)

但它包括 Long: 或 Lat: 我稍后需要 substr() 。

完美的解决方案是匹配“Lat:”和“N or S”之间以及“Long:”和“W or E”之间的任何数字和单个点

4

3 回答 3

2

您可以使用exec[MDN]方法:

var str = 'iasfaisnhf Lat: 46.7132N, Long: 116.997W EFONASDF',
    latPattern = /Lat: (\d*\.\d+)/,
    longPattern = /Long: (\d*\.\d+)/;​​​​​​​​​​​​​​​​​​​​​​​​​​

alert(latPattern.exec(str)[1]);
alert(longPattern.exec(str)[1]);

如果您需要方向指示器,就像您需要的那样,模式将是:

  • /Lat: (\d*\.\d+)(N|S)/
  • /Long: (\d*\.\d+)(E|W)/

方向指示符将位于返回的对象的索引 2 处exec

这是一个工作示例

于 2012-05-21T16:09:31.893 回答
1

对于这种格式,您可以使用:

var str = "iasfaisnhf Lat: 46.7132N, Long: 116.997W EFONASDF";
var values = str.replace(/[^\d.,]/g, "").split(',');

values[0] == "46.7132"
values[1] == "116.997"

现场演示

于 2012-05-21T16:03:30.067 回答
1
Lat:\s?(.*?)N

提取第一组,它将包含纬度。

Long:\s?(.*?)W

提取第一组,它将包含经度。

于 2012-05-21T16:08:39.547 回答