用于正负整数匹配的Javascript RegEx

时间:2019-05-04 14:03:55

标签: javascript node.js regex string typescript

我正在尝试从给定的字符串中提取负整数。但是只能提取正整数。

我正在将"34,-10"字符串传递到getNumbersFromString参数中

我得到了

输出:

['34','10']

预期输出应为

[34,-10]

如何解决此问题?

function getNumbersFromString(numberString){
  var regx = numberString.match(/\d+/g);
  return regx;
}

console.log(getNumbersFromString("34,-10"));

6 个答案:

答案 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)

RegEx:

This expression可以帮助您使用字符列表传递整数:

  • 数字0-9
  • +
  • -

[+\-0-9]+ 

如果愿意,可以将其包装到捕获组中,只是为了使用$1替换字符串很简单:

([+\-0-9]+)

enter image description here

图表:

此图显示了表达式的工作方式:

enter image description here

代码:

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"));