用于匹配正整数和负整数的 Javascript RegEx [重复]

Posted

技术标签:

【中文标题】用于匹配正整数和负整数的 Javascript RegEx [重复]【英文标题】:Javascript RegEx for matching positive and negative integers [duplicate] 【发布时间】:2019-09-22 19:07:43 【问题描述】:

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

我将"34,-10" 字符串传递给getNumbersFromString 参数

我得到了

输出:

['34','10']

预期的输出应该是

[34,-10]

我该如何解决这个问题?

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


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

【问题讨论】:

【参考方案1】:

您还可以在数字前匹配-sign(至少0,最多1)。然后你可以使用map() 将它们转换为数字。

function getNumbersFromString(numberString)
  var regx = numberString.match(/-?\d+/g).map(Number);
  return regx;


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

【讨论】:

Negative 应该是可选的 -? 你的回答是对的,但我期待数组示例中的非字符串值 [34,-10] 投反对票的能否解释一下原因。 这对我来说更好:num.match(/-?\d+/g).join('')【参考方案2】:

您应该使用带有条件- 符号的正则表达式,例如/-?\d+/,您还应该使用例如parseInt 函数将字符串转换为数字。

【讨论】:

【参考方案3】:

regex 版本(假设输入字符串是正确的csv):

function getNumbersFromString(numberString)
  return numberString.split(',').map(v => parseInt(v))


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

【讨论】:

【参考方案4】:

为什么在这里使用正则表达式。 split() 和 map() 呢

function getNumbersFromString(numberString)
  return numberString.split(',').map(Number)


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

或者输入字符串不是“干净的”并且还包含文本?

【讨论】:

【参考方案5】:

正则表达式:

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

数字 0-9 + -
[+\-0-9]+ 

如果你愿意,你可以用一个捕获组来包装它,只是为了简单地使用$1进行字符串替换:

([+\-0-9]+)

图表:

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

代码:

function getNumbersFromString(numberString)
  var regex = numberString.match(/[+\-0-9]+/g);
  return regex;


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

【讨论】:

以上是关于用于匹配正整数和负整数的 Javascript RegEx [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript如何判断一个变量是数字类型?

文本框只能输入正整数(大于0的整数)代码

0是整数吗,整数分几类,它们又是多少?

使用JavaScript验证用户输入的是否为正整数

自然数,实数,有理数,整数,分数,无理数

认识数学各个分支