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

时间:2011-11-06 03:27:52

标签: javascript regex

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

/^-|[0-9\ ]+$/

然而,这仍然是错误的,例如它会匹配“46.0”和“-46.0”,但也会匹配“4-6.0”,这是我不想要的。

目前我正在使用此

/^-|[0-9][0-9\ ]+$/

这解决了第一个问题,但是这将匹配“-4g”之类的东西,这也是不正确的。

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

4 个答案:

答案 0 :(得分:5)

为什么不以下?

parseFloat(x) === x

如果你真的想要一个正则表达式,那么entire pages on the internet专门用于完成这项任务。他们的结论是:

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

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

如果你想允许指数表示法。

答案 1 :(得分:-1)

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

这也允许指数部分。如果您不想这样,请使用

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

希望这有帮助。

答案 2 :(得分:-1)

我的可能性较小,可选您可以将{1,3}限制删除至最少1个和最多3个数字部分,并将其替换为+以对数字进行限制。



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




答案 3 :(得分:-1)

试试这个......

我相信,它在javascript中工作。

var pattern = new RegExp(" ^ - ?[0-9。] * $");

if(pattern.test(valueToValidate)) {

   return true;

} 其他  {

 return false;

}