2010-12-16 48 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