0

サンプル文字列があります:

iasfa345.12isnhf 緯度: 46.7132N、経度: 116.997W EFONA345.55SDF

そこから 116.997 と 46.7132 を抽出する必要があります。

私はなんとか得ることができました:

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

しかし、後で substr() する必要がある Long: または Lat: が含まれています。

完璧な解決策は、"Lat:" と "N or S" の間、および "Long: " と "W or E" の間の任意の数字と 1 つのドットを一致させることです。

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 に答える