所以我有以下字符串
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,它是给定的数字,它可以是任何整数。
那么可以用正则表达式来完成它吗,或者有另一种(更好的)方式来实现,而无需补充代码行?
答案 0 :(得分:4)
它返回27,2,但我不希望那2返回
请参阅match的文档:
它将返回一个包含整个匹配字符串的数组作为第一个元素,然后是括号中捕获的所有结果
因此27
是整体匹配项,而2
来自捕获组[0-9]
。
您可能希望使用/(\d+)/
(然后使用ret[1]
从数组中提取匹配项)
我绝对不希望它作为字符串。
这就是parseInt
,parseFloat
和Unary 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
,它将返回所有整数分组。