2013-03-22 152 views
1

如何从JavaScript字符串中获取数字数组? 说我有以下几点:如何从javascript中的字符串中获取数字数组

var slop = "I bought 3 but 8 4.2 of them, mmmmhghrhghrghghrgh456"; 

你怎么能得到下面的数组:

nums = [3, 8, 4.2, 456]; 

注:我想不会有可能的话使用jQuery。

回答

4

你可以这样做:

var s = "I bought 3 but 8 4.2 of them, mmmmhghrhghrghghrgh456"; 
var nums = s.split(/[^\d\.]+/).map(parseFloat) 
    .filter(function(v){ return v===v }); 

结果:[3, 8, 4.2, 456]

+2

+1 - 干得好。 – j08691 2013-03-22 19:45:29

+1

这绝对是太棒了,谢谢。它甚至不会被''你好.45''' – James 2013-03-22 19:47:04

+2

+1性感,非常性感。当我开始想出一个解决方案时,你用快速的忍者技能来了。 – 2013-03-22 19:47:11

1

基本的正则表达式取:

var string = 'I bought 3 but 8 4.2 of them, mmmmhghrhghrghghrgh456 hello.45'; 
var result = string.match(/((?:\d+\.?\d*)|(?:\.\d+))/g); 
console.log(result); 

结果:

["3", "8", "4.2", "456", ".45"] 

编辑

更新为使用非前缀0.xx小数。如果这不是你想要的,这是旧的正则表达式来匹配它(忽略点)全数字:

var result = string.match(/(\d+\.?\d*)/g); 

老结果:

["3", "8", "4.2", "456", "45"] 
相关问题