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
即可获得包含符号的整个匹配