这个混淆的javascript片段是什么意思/做什么

What does this obfuscated javascript snippet mean/do?

本文关键字:意思 是什么 什么 片段 javascript      更新时间:2023-09-26

我不明白这个小片段: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>

从字面上看,它只是用空白 ('') 替换任何不是数字的东西。