2014-07-15 75 views
1

我有一個文本,將有看起來像這樣的一個或多個配對的名單,提取十進制數

Lat = 38.7970308 
Long = -100.8665928 

我如何可以提取使用Javascript的數字(負號包括如果有)?我想列出所有的號碼。

+0

莫非你提供了你已經嘗試過的代碼 –

+0

使用javascript正則表達式匹配我使用^ [0-9] \ d *(\。\ d +)?$一個類似問題的修改版 – ProgramKitkat

+0

@kitkatCodes:是帶''的格式的數字。 12345'或'12345.'或'000123'或'123.00'或'-0.0'允許嗎? –

回答

1

你可以使用這個表達式:

var s ='Lat = 38.7970308\n' + 
'Long = -100.8665928'; 

var m = s.match(/[+-]?(?:\d+(?:\.\d+)?|\.\d+)/g); 
//=> ["38.7970308", "-100.8665928"] 
0

試試這個正則表達式:

[\+\-]?\d+.?\d+$ 
0

您可以使用這一模式基本上提取所有的數字:

/-?\d+(?:\.\d+)?/g 

如果,在你的字符串例如,要通過對提取這些數字,你需要使用捕獲組:

/^Lat = (-?\d+(?:\.\d+)?)\s*?\r?\nLong = (-?\d+(?:\.\d+)?)\s*?$/mg 

爲每雙創辦,緯度是捕獲組1和捕獲組2中的經度。

請注意,此第二種模式考慮到文字字符串「Lat =」和「Long =」位於一行的開頭,始終按此順序排列,並且僅由一個換行符。 (用米改性劑,^的意思是「行的開始,和$意思是‘行’結束)尾部空格與\s*?允許每個線

例:

var yourString = "Lat = 38.7970308\nLong = -100.8665928"; 
var myRe = /^Lat = (-?\d+(?:\.\d+)?)\s*?\r?\nLong = (-?\d+(?:\.\d+)?)\s*?$/mg; 
var m; 

while ((m = myRe.exec(yourString)) !== null) { 
    console.log(m[1] + "\t" + m[2]+ "\n\n"); 
}