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;