2014-05-05 134 views
1

所以我有一個通過函數創建的字符串,然後另一個函數獲取該字符串,並且只取出數字。該字符串總是看起來像這樣(只是數字的變化):獲取字符串中的所有整數和小數數字​​

"rgba(123,213,321,0.23)" 

所以我想從這個字符串像這樣的數組:

strArray[0] == 123 
strArray[1] == 213 
strArray[2] == 321 
strArray[3] == 0.23 

我想圓形和十進制數的一個數組。我正在使用這個:

strArray = str.match(/(\d+)/g); 

但它沒有做這項工作,因爲十進制數是四捨五入的。這意味着,當我已經與上述相同的字符串,我得到:

strArray[0] == 123 
strArray[1] == 213 
strArray[2] == 321 
strArray[3] == 0 

我也必須指出,我不太有經驗的正則表達式(在所有實際上沒有經歷過)。我從某處獲得了這行代碼。所以如果你在你的答案中解釋了正則表達式部分(如果有的話),我會很感激。

+0

'\ D'匹配任何號碼,'+',以「一個或多個」這樣最後會被搞砸了('.' ISN匹配」數字是否正確?)。你可以試試(\ d + | 0 \。\ d +)?代替。 – Joe

+0

[Decimal number regular expression]可能的重複(http://stackoverflow.com/questions/12117024/decimal-number-regular-expression) –

+0

爲什麼你用RegEx解析CSS? – tenub

回答

1

你可以使用這個表達式:

strArray = str.match(/(\d+(?:\.\d+)?)/g); 
//=> ["123", "213", "321", "0.23"] 
+2

注意'.23'即使有效也不會匹配,即使它無效,'123.01'也會匹配。 – tenub

+0

或2e8(15個字符) – amit

相關問題