在JavaScript中从字符串中删除所有非数字字符

Strip all non-numeric characters from string in JavaScript

考虑使用javascript/ecmascript从字符串中删除所有非数字字符的非dom方案。应保留在0 - 9范围内的任何字符。

1
2
3
var myString = 'abc123.8<blah>';

//desired output is 1238

如何在纯JavaScript中实现这一点?请记住,这是一个非DOM场景,因此jquery和其他涉及浏览器和按键事件的解决方案不适用。


使用字符串的.replace方法和\D的regex,后者是一个与所有非数字匹配的速记字符类:

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


如果你需要这个留下浮点数的点,用这个

4


如果脚本实现支持正则表达式,请使用它。类似:

1
myString.replace(/[^0-9]/g, '');


可以使用regexp替换所有非数字字符:

1
2
var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238

沿着这条线的东西:

1
yourString = yourString.replace ( /[^0-9]/g, '' );


尝试

1
myString.match(/\d/g).join('')

1
2
var myString = 'abc123.8<blah>'
console.log( myString.match(/\d/g).join('') );


我们在2017年,您也可以使用ES2016

1
2
var a = 'abc123.8<blah>';
console.log([...a].filter( e => isFinite(e)).join(''));

1
console.log([...'abc123.8<blah>'].filter( e => isFinite(e)).join(''));

结果是

1
1238