我正在尝试编写一个正则表达式来匹配任意长度字符的正负浮点。我想将结果存储在一个包含双值的数组中。我试过这个
input.match(/^[-+]?(\d*)\.?(\d*)$/)
例如。我的号码是 -123.432 它应该返回[-123.432,-123.432]
如果我的号码是 23.45 它应该返回[23.45,23.45]
我可以使用什么表达式来匹配负浮点和正浮点并返回结果?
我正在尝试编写一个正则表达式来匹配任意长度字符的正负浮点。我想将结果存储在一个包含双值的数组中。我试过这个
input.match(/^[-+]?(\d*)\.?(\d*)$/)
例如。我的号码是 -123.432 它应该返回[-123.432,-123.432]
如果我的号码是 23.45 它应该返回[23.45,23.45]
我可以使用什么表达式来匹配负浮点和正浮点并返回结果?
我不完全理解你的问题
您是否希望在array[0]
and上具有与结果相同的值array[1]
?这样做是没有意义的;你也可以只写一些代码来为你做这件事,而不是强迫正则表达式这样做。
但这是可能的 - 您可以通过将组放在?:
开头来隐藏组,或者如果不需要它们就跳过它们。您可以通过添加更多括号来创建其他组。因此,您修改的正则表达式将如下所示:
input.match(/^([-+]?\d*\.?\d*)$/)
虽然没有意义
更好的正则表达式是:
/-?\d+(?:.\d+)?/
它匹配至少 1 位数字的序列,这些数字可能以-
符号开头并且可能被.
您的原始正则表达式还声明这是整个字符串(因为您添加了 ^ 和 $ 符号)。如果您想从较长的文本中提取数字,则不应这样做。
提取数字后(您有浮点的字符串表示形式),您可以使用一元加号运算符将其转换为数字。之后,只需创建一个带有两次数字的数组,就完成了。
var input = '123.45';
var number = +input;
var arr = [number, number];
注意:据我所知,浮点之前的加号实际上并不属于数字,所以你不应该匹配它。+123.45
不是有效的浮点数。如果您认为它有效[+-]?
,请随意将开始更改为。-?
我认为无效的其他一些浮点示例:
+123
.123
-.123
123.
编辑:工作 JsBin:http ://jsbin.com/ehurAva/1/edit
这应该这样做:
[-+]?([0-9]*\.[0-9]+|[0-9]+)
并在此处测试 JS 的正则表达式:http ://www.regular-expressions.info/javascriptexample.html
粘贴regexp
并单击show match
。
另外,请查看此链接以获取更多信息:浮点正则表达式