正则表达式:匹配

时间:2012-05-21 16:01:25

标签: javascript regex

我有一个示例字符串:

  

iasfa345.12isnhf Lat: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或S”之间以及“Long:”和“W或E”之间的任何数字和单个点

3 个答案:

答案 0 :(得分: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)/

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

这里是working example

答案 1 :(得分: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"

Live DEMO

答案 2 :(得分:1)

Lat:\s?(.*?)N

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

Long:\s?(.*?)W

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