我正在尝试从给定的字符串中提取正和负整数。但是只能提取正整数。
我正在将"34,-10"
字符串传递到getNumbersFromString
参数中
我得到了
输出:
['34','10']
预期输出应为
[34,-10]
如何解决此问题?
function getNumbersFromString(numberString){
var regx = numberString.match(/\d+/g);
return regx;
}
console.log(getNumbersFromString("34,-10"));
答案 0 :(得分:3)
您应使用带有条件-
的正则表达式,例如/-?\d+/
,还应使用parseInt
函数将字符串转换为数字。
答案 1 :(得分:2)
您还可以在数字前匹配-
符号(至少0
和最多1
)。然后,您可以使用map()
将其转换为数字。
function getNumbersFromString(numberString){
var regx = numberString.match(/-?\d+/g).map(Number);
return regx;
}
console.log(getNumbersFromString("34,-10"));
答案 2 :(得分:2)
为什么在这里使用正则表达式。那么split()和map()
function getNumbersFromString(numberString){
return numberString.split(',').map(Number)
}
console.log(getNumbersFromString("34,-10"));
还是输入字符串不是“干净的”并且还包含文本?
答案 3 :(得分:1)
非regex
版本(假设输入字符串是正确的csv):
function getNumbersFromString(numberString){
return numberString.split(',').map(v => parseInt(v))
}
console.log(getNumbersFromString("34,-10"))
答案 4 :(得分:1)
This expression可以帮助您使用字符列表传递整数:
[+\-0-9]+
如果愿意,可以将其包装到捕获组中,只是为了使用$1
替换字符串很简单:
([+\-0-9]+)
此图显示了表达式的工作方式:
function getNumbersFromString(numberString){
var regex = numberString.match(/[+\-0-9]+/g);
return regex;
}
console.log(getNumbersFromString("34, -10, +10, +34"));
答案 5 :(得分:-1)
您应使用以下条件:-?\d+
function getNumbersFromString(numberString){
var regx = numberString.match(/-?\d+/g);
return regx;
}
console.log(getNumbersFromString("34,-10"));