2013-04-16 17 views
1

林要刪除所有,但浮在這種刺痛:正則表達式的問題 - 更換花車,不是int

string = "1 south african rand is 0.11044" 

Im做這樣的:

reg = /[^\d+.\d+]/g 
console.log string.replace(reg, '') 

,它記錄

10.11044 

這是錯誤的,我只想要xxxx.xxxxx部分。 1不是一個浮點數,所以它不應該是這個的一部分?

我該如何改變它?

+0

'[^ ...]'匹配任何個性是不括號內的一個。它不是在尋找序列。 – Barmar

+0

匹配的位很好,只是沒有[]是的.. – Harry

+0

我已經糾正了我的答案使用負面的環視。經過測試,我的工作正確。 –

回答

2

以下的正則表達式應該匹配的float你(的示例中提供):

/(-?\d*\.\d+)/ 

要更換:

console.log (string.replace(/(-?\d*\.\d+)/, '')); 
+0

他試圖去匹配那些不是浮動的詞語,以便將它們刪除。 –

+0

我給他提供了正則表達式來匹配浮點數,可以用來替換。看到我編輯的答案。 – anubhava

+0

**現場演示:http://ideone.com/ewtBwk** – anubhava

1

我用積極的背後(? < = ..)在下面的正則表達式

\.\d+(?<=\d) 

使用該正則表達式與「替換下面值」。其結果將是1 23 33 3

1 23 33.2000 3.4445 

希望它能幫助

+1

我認爲他想要的結果是'33.2000 3.4445'。應該排除'1'和'23',因爲它們沒有小數點和分數。 – Barmar

0
var reg = /\d+\.\d+/g 
var str = "1 south african rand is 0.11044"; 
var onlyFloats = str.match(reg).join(" "); 
console.log(onlyFloats) 
0

嘗試此

string = "1 south african rand is 0.11044" 
reg = /(\d+\.\d+)/g; 
string.match(reg);