我有一个示例字符串:
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”之间的任何数字和单个点
我有一个示例字符串:
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”之间的任何数字和单个点
您可以使用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
。
这是一个工作示例。
对于这种格式,您可以使用:
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"
Lat:\s?(.*?)N
提取第一组,它将包含纬度。
Long:\s?(.*?)W
提取第一组,它将包含经度。