我不明白这个小片段:var num = str.replace(/[^0-9]/g, '');
做了什么。
上下文:
function retnum(str) {
var num = str.replace(/[^0-9]/g, '');
var liczba = parseInt(num);
return liczba;
}
这个 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"在波兰语中的意思是数字:-)
此函数获取一个字符串,从中删除所有非数字字符,将字符串转换为整数,然后返回整数。您专门询问的行是使用 string.replace 方法从初始字符串中删除所有非数字字符的部分。
它没有混淆,而是使用正则表达式。
表达式匹配所有不是数字的东西,然后删除它们。 0-9
的意思是"任何数字",^
的意思是"不是"。g
标志意味着检查整个字符串,而不仅仅是第一个匹配项。最后,将结果转换为数字。
例:
var input = 'abc123def456';
var str = input.replace(/[^0-9]/g, '');
var num = parseInt(str);
document.querySelector('pre').innerText = num;
<pre></pre>
从字面上看,它只是用空白 ('') 替换任何不是数字的东西。