2010-12-16 62 views
22

如何篩選字符串的數字?JQuery篩選字符串數字

Example Pseudo Code: 
number = $("thumb32").filternumbers() 
number = 32 
+0

你能舉一些例子數據嗎? dkwlj-32-fjkij-ff0-33? – sunn0 2010-12-16 12:14:41

+2

請閱讀常見問題解答:http://stackoverflow.com/faq問題應該是*問題*。你對問題的投入越多,你最近的答案的質量和數量越好(以及對你所展示的場地的更多尊重)。 – 2010-12-16 12:15:58

回答

67

你不需要jQuery的這 - 只是普通的舊的JavaScript regex replacement

var number = yourstring.replace(/[^0-9]/g, '')

這將擺脫任何非[0-9]

編輯:這是一個小功能從輸入字符串中提取所有數字(作爲實際數字)。這不是一個詳盡的表達,但對任何需要的人來說都是一個好的開始。

function getNumbers(inputString){ 
    var regex=/\d+\.\d+|\.\d+|\d+/g, 
     results = [], 
     n; 

    while(n = regex.exec(inputString)) { 
     results.push(parseFloat(n[0])); 
    } 

    return results; 
} 

var data = "123.45,34 and 57. Maybe add a 45.824 with 0.32 and .56" 
console.log(getNumbers(data)); 
// [123.45, 34, 57, 45.824, 0.32, 0.56]; 
+6

爲什麼正則表達式很難?它看起來很外國,我的大腦似乎立即關閉,因爲它被很多標點符號和符號所淹沒,如果我不知道它們的意思但知道它們的意思是......爲什麼我必須每次都看這個?信息只是不會粘在我的腦海裏,不管... – 2013-05-09 21:47:14

+5

^歡迎來到俱樂部。 – 2013-05-14 22:22:00

+0

你好。但是像12.5,20.3這樣的數字。他們返回125和203? – 2016-12-06 02:29:20

26

不是真的jQuery的根本:

number = number.replace(/\D/g, ''); 

這個正則表達式,/\D/g,匹配任何非數字。因此,對.replace()的呼叫將用空字符串替換所有非數字(所有這些都歸功於「g」)。

編輯 —如果你想要一個實際* 值,你可以從字符串除去非數字後使用parseInt()

var number = "number32"; // a string 
number = number.replace(/\D/g, ''); // a string of only digits, or the empty string 
number = parseInt(number, 10); // now it's a numeric value 

如果原始字符串可能根本沒有數字在這種情況下,您將從parseInt中獲得數字非值NaN,這可能與任何情況一樣好。

+0

你可能想在那裏有一個'parseInt'? – sje397 2010-12-16 12:14:33

+0

@ sje397:也許,也許不是 - 問題的質量,我們不知道他/她是否想要一個只包含數字的字符串。 – 2010-12-16 12:16:33

+0

也許=也許不是=可能? ;) – sje397 2010-12-16 12:17:25