考虑一个非DOM方案,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应保留范围为0 - 9的任何字符。在JavaScript中删除字符串中的所有非数字字符
var myString = 'abc123.8<blah>';
//desired output is 1238
如何在普通的JavaScript中实现这一点?请记住,这是一个非DOM场景,所以jQuery和涉及浏览器和按键事件的其他解决方案并不适合。
考虑一个非DOM方案,您希望使用JavaScript/ECMAScript从字符串中删除所有非数字字符。应保留范围为0 - 9的任何字符。在JavaScript中删除字符串中的所有非数字字符
var myString = 'abc123.8<blah>';
//desired output is 1238
如何在普通的JavaScript中实现这一点?请记住,这是一个非DOM场景,所以jQuery和涉及浏览器和按键事件的其他解决方案并不适合。
使用字符串的.replace
法的\D
一个正则表达式,这是一个速记字符类匹配所有的非数字:如果你需要这个离开点为
myString = myString.replace(/\D/g,'');
东西线沿线的:
yourString = yourString.replace (/[^0-9]/g, '');
不完全的答案,原来的问题,而是一个版本来处理小数点:'yourString = yourString。替换(/[^0-9.]/g,'');' – 2016-07-05 17:26:22
您可以使用正则表达式来replace所有非数字字符:
var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238
使用正则表达式,如果你的脚本实现支持他们。喜欢的东西:
myString.replace(/[^0-9]/g, '');
出于某种原因,这种方式似乎比[^ \ d]更可读。 – 2013-09-29 05:48:57
正则表达式分隔符后的g是多少? – 2017-05-03 19:57:59
不适用于浮点数字:/ – vsync 2017-06-05 12:55:36
我们是在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
这是一个非常低效的方法来进行此操作。 – djheru 2017-08-10 16:02:49
这当然是一种选择,只是不是一个很好的选择。 – 2017-12-02 06:42:54
谢谢csj;任何地方找到'\ D'的更多信息? – 2009-12-07 19:55:35
这是我的默认正则表达式引用:http://www.regular-expressions.info/reference.html 内置的字符类都有内置的补充。 \ d \ D \ w \ W(word字符与一切除了单词字符) \ s \ S(空格与一切,但空白) – csj 2009-12-07 20:38:22
只需要清楚,这里是替换:http://www.w3schools.com/jsref/jsref_obj_regexp.asp,因为正斜杠和“g”是该命令的一部分,而不是RegEx的一部分。 – 2011-02-09 00:17:31