考虑一个非dom场景,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应该保留0 - 9范围内的任何字符。

var myString = 'abc123.8<blah>';

//desired output is 1238

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


当前回答

大致如下:

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

其他回答

在Angular / Ionic / VueJS中——我只是想出了一个简单的方法:

stripNaN(txt: any) {
    return txt.toString().replace(/[^a-zA-Z0-9]/g, "");
}

视图上的用法:

<a [href]="'tel:'+stripNaN(single.meta['phone'])" [innerHTML]="stripNaN(single.meta['phone'])"></a>

上面这些答案的问题是,它假设是整数。但如果需要浮点值,则前面的reg字符串将删除小数点。

为了纠正这个错误,你需要写一个带有^的否定字符类

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

如果脚本实现支持正则表达式,请使用正则表达式。喜欢的东西:

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

将字符串的.replace方法使用\D的正则表达式,这是一个匹配所有非数字的简写字符类:

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

这一点,

.match(/\d|\.|\-/g).join('');

处理两者和。也,

例子:

“平衡- 100美元,00.50”.match (\ d。| | \ \ / / g) . join ();

输出

10000.50