考慮一個非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