2012-05-21 3 views
0

У меня есть строка выборки:регулярное выражение: матч между

iasfa345.12isnhf Lat: 46.7132N, Long: 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»

ответ

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.

Вот working example.

+0

последние 2 регулярных выражения отлично работают с указателями поворота. благодаря –

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

+0

Спасибо, я отредактировал мое сообщение, чтобы показать, что строка может содержать и другие цифры (и они не должны быть включены в совпадение). –

1
Lat:\s?(.*?)N 

Extract первую группу, и она будет содержать широту.

Long:\s?(.*?)W 

Извлеките первую группу, и она будет содержать долготу.

Смежные вопросы