3

文字列から特定の数値を抽出しようとしていますが、実行方法がわかりません。

文字列の形式は次のとおりです。

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)

しかし、それは私にすべての数字を与えるだけです。

よろしくお願いします!

4

2 に答える 2

1

文字列がstr使用されている場合、この正規表現。

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

http://jsfiddle.net/CHfcT/

于 2012-04-07T16:43:38.257 に答える
1

次の正規表現を使用してみてください

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

これは、次のことを前提としています。

  • マーカー座標には、常にドットの後に 7 つ以上の数字があります
  • 文字列の他の部分に、ドットの後に 7 つを超える数字がある同様のパターンが含まれていない

例 ( JSFiddle ):

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

私が 7 を選んだ理由は、サンプルの他の数字が 6 だったので、それらを除外したためです。座標の小数点以下の桁数が常に固定されていることがわかっている場合は、次の,ようにせずにその特定の数値を使用できます。

/\s+\.\d{10}/g
于 2012-04-07T16:44:27.367 に答える