考虑一个非DOM场景,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应保留范围0 - 9中的任何字符。
0 - 9
var myString = 'abc123.8<blah>'; //desired output is 1238
请记住,这是一个非DOM场景,所以jQuery和其他涉及浏览器和按键事件的解决方案不适合。
大意如下:
yourString = yourString.replace ( /[^0-9]/g, '' );
您可以使用RegExp来取代所有非数字字符:
var myString = 'abc123.8<blah>';myString = myString.replace(/[^\d]/g, ''); // 1238
如果您的脚本实现支持它们,请使用正则表达式。类似于:
myString.replace(/[^0-9]/g, '');
将字符串的.replace方法与\D的正则表达式一起使用,这是一个匹配所有非数字的速记字符类:
.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(''));
或
console.log([...'abc123.8<blah>'].filter( e => isFinite(e)).join(''));
结果是
1238
尝试
myString.match(/\d/g).join``
var myString = 'abc123.8<blah>'console.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)或USD 123,122.892(123122.892)或任何货币(如₹ 98,79,112.50(9879112.5))等字符串转换货币数字,以给我一个数字输出,包括十进制指针。
$123,232,122.11
USD 123,122.892
₹ 98,79,112.50
我必须制作自己的regex,看起来像这样:
str = str.match(/\d|\./g).join('');
删除所有非数字字符但保留小数(并返回数字)的短函数:
parseNum = str => +str.replace(/[^.\d]/g, '');let str = 'a1b2c.d3e';console.log(parseNum(str));
这个,
.match(/\d|\.|\-/g).join('');
同时处理,和.以及-
,
.
-
示例:
"Balance -$100,00.50".match(/\d|\.|\-/g).join('');
产出
10000.50
上面这些答案的问题是它假设整数。但是如果您需要浮点值,那么前面的reg字符串将删除小数点。
要纠正这一点,你需要用^写一个否定的字符类
var mystring = mystring.replace(/[^0-9.]/g, '');