从JavaScript中的字符串返回整数

时间:2018-06-29 15:05:24

标签: javascript regex

所以我有以下字符串

var str = "Ana has 27 apples";

是否有任何函数只能将str中的数字27作为整数返回?

我在这里找到了一个类似这样的旧话题,但那是关于Java的。但是它让我陷入了Regular Expressions

然后我继续尝试使用此方法,但没有发生任何意外。 这是我来这里之前尝试的最后一个表达式:

    var str = "Ana has 27 apples";
    var regex = /([0-9])\d+/;
    var ret = str.match(regex);
    console.log(ret);

它返回27,2,但是我不希望返回2,我绝对不希望它作为字符串。 问题是该数字不是必需的27,它是给定的数字,它可以是任何整数。

那么可以用正则表达式来完成它吗,或者有另一种(更好的)方式来实现,而无需补充代码行?

7 个答案:

答案 0 :(得分:4)

  

它返回27,2,但我不希望那2返回

请参阅match的文档:

  

它将返回一个包含整个匹配字符串的数组作为第一个元素,然后是括号中捕获的所有结果

因此27是整体匹配项,而2来自捕获组[0-9]

您可能希望使用/(\d+)/(然后使用ret[1]从数组中提取匹配项)

  

我绝对不希望它作为字符串。

这就是parseIntparseFloatUnary plus +的用途。

答案 1 :(得分:2)

您可以使用parseInt来将数字字符串转换为数字;

const str = "Ana has 27 apples";

const num = str.match(/\d+/)[0];

console.log(parseInt(num, 10))

答案 2 :(得分:1)

您在这里:

python3 -c "import crypt; print(crypt.crypt('password', '\$6\$saltstring'))"正则表达式将帮助您获取match(/\d+/)[0],然后使用parseInt()获得number as string

检查以下工作示例:

integer

答案 3 :(得分:1)

在您的REGEXP上添加g以进行全局匹配

var regex = /([0-9])\d+/g;

希望这会有所帮助:>

var str = "Ana has 27 apples";
var regex = /([0-9])\d+/g;
var ret = str.match(regex);
console.log(ret)

答案 4 :(得分:1)

与其他答案提供的方法不同的是,仅从字符串中删除所有非数字字符,那么剩下的将是任何数字。

function numericOnly(str) {
    return parseInt(str.replace(/\D+/g,''));
}

请注意,这仅在您知道字符串中只有一个数字时才有用。一些示例结果:

console.log(numericOnly('Ana has 27 apples')); // 27
console.log(numericOnly('Ana has 27 apples and 42 oranges')); //2742
console.log(numericOnly('Ana has no apples')); // NaN

答案 5 :(得分:1)

只需像下面那样修改您的代码

您将只获得27张

var str = "Ana has 27 apples";
    var regex = /\d+/;
    var ret = str.match(regex);
    console.log(ret);

答案 6 :(得分:1)

您只需执行/(\d+)/g,它将返回所有整数分组。

https://regexfiddler.com/e/hj7dmrxfba81/extract-integers