Регулярное выражение широты / долготы

Я в середине разработки приложения Twitter. При разборе JSON мне нужно извлечь широту и долготу, сохранить их в базе данных, а затем использовать их в приложении для Android. В основном мне удалось его извлечь, но люди отправляют свои твиты с разных устройств (iPhone, Blackberry и т. Д.). Я получаю разные ответы. Вот примеры:

ÜT: 51.554644,-0.003976 51.576100, -0.031600 Iphone: 51.554644,-0.003976 

Теперь мой вопрос: как я могу использовать регулярное выражение для соответствия широте и долготе и извлекать его в виде массива в JavaScript независимо от слова, которое появляется перед ним?

Related of "Регулярное выражение широты / долготы"

Вы можете использовать что-то вроде этого:

 ([0-9.-]+).+?([0-9.-]+) 

Поскольку вы отметили свой вопрос как PHP, так и JavaScript, я покажу вам, как использовать его в обоих.

В PHP:

 preg_match('/([0-9.-]+).+?([0-9.-]+)/', $str, $matches); $lat=(float)$matches[1]; $long=(float)$matches[2]; // coords are in $lat and $long с preg_match('/([0-9.-]+).+?([0-9.-]+)/', $str, $matches); $lat=(float)$matches[1]; $long=(float)$matches[2]; // coords are in $lat and $long 

В JavaScript:

 var matches=str.match(/([0-9.-]+).+?([0-9.-]+)/); var lat=parseFloat(matches[1]); var long=parseFloat(matches[2]); // coords are in lat and long 

Для удовольствия здесь тоже Python:

 import re match = re.match(r'([0-9.-]+).+?([0-9.-]+)', str) lat = float(match.group(1)) long = float(match.group(2)) # coords are in lat and long 

Это работает для всех строк, которые вы указали:

 $str = "Iphone: 51.554644,-0.003976"; preg_match_all("/(?<lat>[-+]?([0-9]+\.[0-9]+)).*(?<long>[-+]?([0-9]+\.[0-9]+))/", $str, $matches); $lat = $matches['lat']; $long = $matches['long']; var_dump($lat, $long); 

Надеюсь, это сработает

ОБНОВИТЬ

 $output= 'ÜT: 51.554644,-0.003976'; function makePerfect($x) { return preg_replace('/[^-?0-9\.]/','', $x); } $lenLong=explode(',',$output); $final=array_map('makePerfect',$lenLong); //debug like this echo "<pre>"; print_r($final); 

дисплей

 Array ( [0] => 51.554644 [1] => -0.003976 ) 

В javascript –

 var t1 = "ÜT: 51.554644,-0.003976"; var t2 = "51.576100, -0.031600"; var t3 = "Iphone: 51.554644,-0.003976"; var reg = new RegExp(/[+-]?[\d.]+/g); console.log(t1.match(reg)); console.log(t2.match(reg)); console.log(t3.match(reg)); 

формат: широта, долгота

проверено с помощью python:

 (?<![0-9\.])((-?[0-8]?[0-9](\.\d*)?)|(-?90(\.[0]*)?))[\ ]*,[\ ]*((-?([1]?[0-7][0-9]|[1-9]?[0-9])(\.\d*)?)|-?180(\.[0]*)?)(?![0-9\.])