javascript中存储在数组中的负浮点数结果的正则表达式

javascript中存储在数组中的负浮点数结果的正则表达式,javascript,Javascript,我试图编写一个正则表达式来匹配任意长度字符的正浮点和负浮点。我想将结果存储在一个包含双值的数组中。我试过这个 input.match(/^[-+]?(\d*)\.?(\d*)$/) 例如,我的号码是-123.432,它应该返回[-123.432,-123.432] 如果我的号码是23.45,它应该返回[23.45,23.45] 我可以使用什么表达式来匹配负浮点和正浮点并返回结果?这应该是: [-+]?([0-9]*\[0-9]+|[0-9]+) 并在以下位置测试JS的正则表达式: 粘贴您的re

我试图编写一个正则表达式来匹配任意长度字符的正浮点和负浮点。我想将结果存储在一个包含双值的数组中。我试过这个

input.match(/^[-+]?(\d*)\.?(\d*)$/)
例如,我的号码是-123.432,它应该返回
[-123.432,-123.432]

如果我的号码是23.45,它应该返回
[23.45,23.45]

我可以使用什么表达式来匹配负浮点和正浮点并返回结果?

这应该是:

[-+]?([0-9]*\[0-9]+|[0-9]+)

并在以下位置测试JS的正则表达式:

粘贴您的
regexp
,然后单击
show match


另外,查看此链接了解更多信息:

更好的正则表达式是:

/-?\d+(?:.\d+)?/
它匹配至少1个数字的序列,这些数字可能以
-
符号开头,也可能被

原始正则表达式还声明这是整个字符串(因为您向其中添加了“^”和“$”符号)。如果你想从较长的文本中提取数字,你不应该这样做

提取数字后(具有浮点的字符串表示形式),可以使用一元加号运算符将其转换为数字。在这之后,只需创建一个带有两次数字的数组,就完成了

var input = '123.45';
var number = +input;
var arr = [number, number];
注意:据我所知,浮点前的加号实际上不属于数字,因此不应该匹配它<代码>+123.45不是有效的浮点。如果您认为它是有效的,可以随意更改开始到<代码> [+-]?<代码>,而不是<代码> ->代码>。< /P>

其他浮点数的例子我不认为有效:< /P>

+123
.123
-.123
123.

编辑:工作JsBin:

我不太明白你的问题

是否希望在
array[0]
array[1]
上获得与结果相同的值?这样做是没有意义的;您也可以只编写一些代码来完成它,而不是强制regexp这样做

但这是可能的-您可以通过将
?:
放在组的开头来隐藏组,或者在不需要组时跳过它们。只需添加更多括号,即可创建其他组。因此,您修改的regexp将如下所示:

input.match(/^([-+]?\d*\.?\d*)$/)

尽管这毫无意义

就我对你的问题的正确理解而言,你当前的正则表达式应该能够找到正确的数字。您只需手动将它们放入阵列中。尽管如此,我还是建议您将正则表达式更改为“^[-+]”?\d+[\.\d]\d*$”,谢谢您的回复,但是这个输入.match()返回一个数组值,在您的情况下,它没有按照我的要求工作,它只提供了[23.45]我需要数组[23.45,23.45]嗨,我之前也尝试过。但它会留下负值。[23.45,23.45]需要[23.45,-23.45]嗨。谢谢你的帮助:)我还有一个疑问,我在“RegExp.$1”中取了之后的值,它能取负值吗?因为我正试图这样做,但无法接受,请帮助。@Ben10不明白你的意思。如果(input.match(/[-+])([0-9]*\.[0-9]+[0-9]+[0-9]+)/){this_item.setValue(ezSystem.ezcall(“EZUtil.printf”、“%1%2”,RegExp.$1.length==0?'0':RegExp.$1,RegExp.$2.length==0?“:”:.concat(RegExp.$2))}}.)在这里,RegExp.1的负值不会出现,当我试图计算-23.45时,它将RegExp.1作为23.45 IDK why。请帮忙:)你好,阿达斯科,谢谢你的帮助:)我还有一个疑问,我在“RegExp.$1”中取值,它能取负值吗?因为我正在尝试做,但它无法接受,请帮助。你能给我一些你正在尝试做的代码示例吗?如果(input.match(/[-+])([0-9]*\.[0-9]+[0-9]+[0-9]+/){这个项目.setValue(ezSystem.ezcall(“EZUtil.printf”,“%1%2”,RegExp.1.length==0?:RegExp.1,RegExp.length==0?''.$2?)}.concat(RegExp.2))})在这里,RegExp.1的负值不会出现,当我试图计算-23.45时,它将RegExp.1作为23.45 IDK why。请帮忙:)那是因为符号不在括号内。每个
$N
变量对应于特定的匹配组,该组由从左侧开始计数的括号表示。您只需使用
$\uuu
而不是
$1
即可获得包含符号的整个匹配