在JavaScript中删除string中的所有非数字字符

考虑一个非DOM场景,你想要使用JavaScript / ECMAScript从string中删除所有非数字字符。 任何在0-9范围内的字符都应该保留。

var myString = 'abc123.8<blah>'; //desired output is 1238 

你将如何在普通的JavaScript中实现这一点? 请记住这是一个非DOM场景,所以jQuery和其他涉及浏览器和按键事件的解决scheme是不合适的。

使用正则expression式\D的string.replace方法,该types是一个与所有非数字匹配的简写字符类:

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

如果你需要这个离开浮点数的点,使用这个

 var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // gives "-12345.50" 

如果您的脚本实现支持它们,请使用正则expression式。 就像是:

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

您可以使用RegExp replace所有非数字字符:

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

有些东西是:

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

我们现在在2017年你也可以使用ES2016

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

要么

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

结果是

 1238