考虑一个非dom场景,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应该保留0 - 9范围内的任何字符。
var myString = 'abc123.8<blah>';
//desired output is 1238
如何在纯JavaScript中实现这一点?请记住,这是一个非dom场景,因此jQuery和其他涉及浏览器和按键事件的解决方案并不适用。
考虑一个非dom场景,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应该保留0 - 9范围内的任何字符。
var myString = 'abc123.8<blah>';
//desired output is 1238
如何在纯JavaScript中实现这一点?请记住,这是一个非dom场景,因此jQuery和其他涉及浏览器和按键事件的解决方案并不适用。
您可以使用RegExp替换所有非数字字符:
var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238
将字符串的.replace方法使用\D的正则表达式,这是一个匹配所有非数字的简写字符类:
myString = myString.replace(/\D/g,'');
如果你需要这个为浮点数留下圆点,使用这个
var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // gives "-12345.50"
我们现在是2017年,你也可以使用ES2016
var a = 'abc123.8<blah>';
console.log([...a].filter( e => isFinite(e)).join(''));
or
console.log([...'abc123.8<blah>'].filter( e => isFinite(e)).join(''));
结果是
1238
try
myString.match(/\d/g).join``
var myString =“abc123.8”等等 游戏机/ log (myString . match (d / g)。join ();
在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>
不幸的是,上面的答案都不适合我。
我想转换货币数字从字符串如$123,232,122.11(1232332122.11)或美元123,122.892(123122.892)或任何货币如98,79,112.50(9879112.5)给我一个数字输出,包括十进制指针。
我必须创建自己的正则表达式,看起来像这样:
str = str.match(/\d|\./g).join('');
删除所有非数字字符但保留小数(并返回数字)的简短函数:
parseNum = str => +str.replace(/[^.\d]/g, ''); 设str = 'a1b2c.d3e'; console.log(parseNum(str));
这一点,
.match(/\d|\.|\-/g).join('');
处理两者和。也,
例子:
“平衡- 100美元,00.50”.match (\ d。| | \ \ / / g) . join ();
输出
10000.50
上面这些答案的问题是,它假设是整数。但如果需要浮点值,则前面的reg字符串将删除小数点。
为了纠正这个错误,你需要写一个带有^的否定字符类
var mystring = mystring.replace(/[^0-9.]/g, '');