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

时间:2009-12-07 18:59:48

标签: javascript string

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

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

//desired output is 1238

您如何在纯JavaScript中实现这一目标?请记住这是一个非DOM场景,所以jQuery和其他涉及浏览器和按键事件的解决方案都不合适。

10 个答案:

答案 0 :(得分:1199)

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

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

答案 1 :(得分:312)

如果您需要这个以保留浮点数的点,请使用此

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

答案 2 :(得分:39)

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

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

答案 3 :(得分:21)

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

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

答案 4 :(得分:19)

有些事情:

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

答案 5 :(得分:4)

Short函数可删除所有非数字字符,但保留小数点(并返回数字):

parseNum = str => +str.replace(/[^.\d]/g, '');
let str = 'a1b2c.d3e';
console.log(parseNum(str));

答案 6 :(得分:1)

在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>

答案 7 :(得分:1)

不幸的是,以上答案对我都没有作用。

我正在尝试从$123,232,122.11(1232332122.11)或USD 123,122.892(123122.892)之类的字符串或₹ 98,79,112.50(9879112.5)之类的任何货币中转换货币数字,以提供包括小数点指针。

必须制作自己的正则表达式,看起来像这样:

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

答案 8 :(得分:0)

尝试

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

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

答案 9 :(得分:-3)

我们现在 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