2016-02-19 123 views
0

我不明白這個小片段:var num = str.replace(/[^0-9]/g, '');的確如此。這是什麼混淆JavaScript代碼段意味着/做什麼?

上下文:

function retnum(str) { 
    var num = str.replace(/[^0-9]/g, ''); 
    var liczba = parseInt(num); 
    return liczba; 
} 
+0

這只是將任何字符串轉換爲數字的基本方法 – adeneo

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp – Teemu

+1

這甚至沒有模糊處理,您應該閱讀有關正則表達式。 –

回答

2

這JavaScript代碼段將撕裂了任何不是(正則表達式的^部分指「未」)一在str號,然後從該結果作爲返回一個整數鑄liczba。見我的評論:

// This function will return a number from a string that may contain other characters. 
// Example: "1.23" -> 123 
// Example: "a123" -> 123 
// Example: "hg47g*y#" -> 47 

function retnum(str) { 
    // First let's replace everything in str that is not a number with "" (nothing) 
    var num = str.replace(/[^0-9]/g, ''); 
    // Let's use JavaScript's built in parseInt() to parse an Integer from the remaining string (called "num") 
    var liczba = parseInt(num); 
    // Let's now return that Integer: 
    return liczba; 
} 

順便說一句,「liczba」是指在波蘭:-)數

+0

非常感謝您通過代碼中的步驟進行徹底的解釋和指導! – ADAMPOKE111

+0

沒問題亞當!如果你能回答你的問題,你能否正確回答我的答案? –

0

這不是模糊的,它的使用regular expression

表達式匹配所有不是數字的東西,然後刪除它們。 0-9的意思是「任何數字」,^的意思是「不」。 g標誌意味着檢查整個字符串,而不僅僅是第一次匹配。最後,結果轉換爲數字。

實施例:

var input = 'abc123def456'; 
 
var str = input.replace(/[^0-9]/g, ''); 
 
var num = parseInt(str); 
 
document.querySelector('pre').innerText = num;
<pre></pre>

2

該函數採用一個字符串,從它去除所有非數字字符,輪流串入的整數,並返回整數。你所特別提到的那一行是使用string.replace方法從初始字符串中去除所有非數字字符的部分。

0

它實際上只是用空白('')代替任何不是數字的東西。