Javascript:允许负浮点数和正浮点数的正则表达式?

Javascript:允许负浮点数和正浮点数的正则表达式?,javascript,regex,Javascript,Regex,我试图编写一个正则表达式来匹配任意长度字符的正浮点和负浮点。我试过这个 /^-|[0-9\ ]+$/ 但是这仍然是错误的,因为它将匹配“46.0”和“-46.0”,但也将匹配我不想要的“4-6.0” 现在我正在用这个 /^-|[0-9][0-9\ ]+$/ 这解决了第一个问题,但这将匹配“-4g”之类的内容,这也是不正确的 我可以使用什么表达式来匹配负浮点和正浮点?为什么不使用以下表达式 parseFloat(x) === x 如果你真的想要一个正则表达式,有专门用于此任务的。他们的结论是

我试图编写一个正则表达式来匹配任意长度字符的正浮点和负浮点。我试过这个

/^-|[0-9\ ]+$/
但是这仍然是错误的,因为它将匹配“46.0”和“-46.0”,但也将匹配我不想要的“4-6.0”

现在我正在用这个

/^-|[0-9][0-9\ ]+$/
这解决了第一个问题,但这将匹配“-4g”之类的内容,这也是不正确的

我可以使用什么表达式来匹配负浮点和正浮点?

为什么不使用以下表达式

parseFloat(x) === x
如果你真的想要一个正则表达式,有专门用于此任务的。他们的结论是:

/^[-+]?[0-9]*\.?[0-9]+$/

如果你想允许指数记数法

/^[-+]?[0-9]+(?:\.[0-9]+)?(?:[eE][-+][0-9]+)?$/
这也允许指数部分。如果你不想那样,就用

/^[-+]?[0-9]+(?:\.[0-9]+)?$/

希望这有帮助。

我的有点小,可选您可以删除
{1,3}
最小1和最大3个数字部分的限制,并将其替换为
+
以对数字进行无限制

/^[\-]?\d{1,3}\.\d$/
试试这个

我敢肯定,这是javascript的工作

var模式=新的RegExp(“^-?[0-9.]*$”

if(模式测试(valueToValidate)) {

} 其他的 {


}

我对此表示怀疑,因此可能比搜索速度更快。可能的重复出现在第一次搜索“regex for negative float”时,不允许搜索“42”。这是一个完全有效的JS数字。此外,42.e3没有像它应该的那样匹配。感谢您提供此代码片段,它可能会提供一些即时帮助。通过说明为什么这是一个很好的解决问题的方法,正确地解释它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请在回答中添加解释,并说明适用的限制和假设。特别是,它是否接受
3.4.5
?(不应该)空字符串怎么样?
/^[-+]?[0-9]+(?:\.[0-9]+)?$/
   return true;
 return false;