用于匹配正整数和负整数的 Javascript RegEx [重复]
Posted
技术标签:
【中文标题】用于匹配正整数和负整数的 Javascript RegEx [重复]【英文标题】:Javascript RegEx for matching positive and negative integers [duplicate] 【发布时间】:2019-09-22 19:07:43 【问题描述】:我正在尝试从给定的字符串中提取 positive 和 negative 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章