2016-02-19 125 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

它实际上只是用空白('')代替任何不是数字的东西。