从JavaScript中的字符串中剥离所有非数字字符

2020/09/21 17:01 · javascript ·  · 0评论

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

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

//desired output is 1238

您将如何用纯JavaScript实现此目标?请记住,这是非DOM方案,因此jQuery和其他涉及浏览器和按键事件的解决方案都不适合。

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

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

如果您需要用它来保留浮点数,请使用此

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

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

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

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

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

类似于以下内容:

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

简短功能,用于删除所有非数字字符,但保留小数点(并返回数字):

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

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

尝试

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

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

我想从$123,232,122.11(1232332122.11)或USD 123,122.892(123122.892)之类的字符串中转换货币数字,或者从(9879112.5)之类的任何货币₹ 98,79,112.50转换为数字输出,包括十进制指针。

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

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

我们在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
本文地址:http://javascript.askforanswer.com/congjavascriptzhongdezifuchuanzhongbolisuoyoufeishuzizifu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!