Regex 介于0和1之间的浮点数正则表达式

Regex 介于0和1之间的浮点数正则表达式,regex,Regex,我正在尝试验证浮点数的输入,最大值为1.0,最小值为0 Min : 0 Max : 1 可能值 0.1 0.99 0.365 如何使用正则表达式成功?此正则表达式应该可以很好地执行以下操作: /((0(\.[0-9]*)?)|(1(\.0)?))/ 除非您计划匹配指数形式的浮点。这对我来说很有效: 0+([.][0-9]+)?|1([.]0)? 还是我错过了什么?:) 这将使用可选符号匹配[0,1]中的浮点数,但如果使用科学记数法或数字以小数点开头,则不匹配 \+?(0(\.[0-9]+

我正在尝试验证浮点数的输入,最大值为
1.0
,最小值为
0

Min : 0
Max : 1
可能值

0.1
0.99
0.365

如何使用正则表达式成功?

此正则表达式应该可以很好地执行以下操作:

/((0(\.[0-9]*)?)|(1(\.0)?))/
除非您计划匹配指数形式的浮点。

这对我来说很有效:

0+([.][0-9]+)?|1([.]0)?

还是我错过了什么?:)

这将使用可选符号匹配[0,1]中的浮点数,但如果使用科学记数法或数字以小数点开头,则不匹配

\+?(0(\.[0-9]+)?|1(\.0+)?)
解释如下:

0            # a zero
(\.\d+)?     # a dot and min 1 numeric digit - this is made optional by ?
|            # or
1\.0         # one, a dot and a zero
如果您需要它来匹配整个sring,那么您需要插入符号和美元符号来分别表示字符串的开头和结尾,如
^(0(\.\d+)| 1\.0)$


此外,如果要查找可能的负数,则需要在前面加上可选的减号,如
^-?(0(\.\d+)?\124; 1\.0)$
。当然,对于指数,模式需要更改。

作为javascript正则表达式:

 /^(0(\.\d+)?|1(\.0+)?)$/
一般解决办法:

^0*(?:(?:0(?:\.\d*)?\d+)\1(?:\.0*)?)$

格式:

 ^     
 0* 
 (?:
      (?:
           0 
           (?: \. \d* )?
        |  \. \d+ 
      )
   |  
      1 
      (?: \. 0* )?
 )
 $
就是这样:

/^(0+\.?|0*\.\d+|0*1(\.0*)?)$/
^(?)

这将接受以下格式的数字[0,1]


0
0.5
5.
1.
1
1

只要读一篇关于regex的简介就行了。 希望这能奏效

^(0.0*[1-9](\d+)?)$


如果我遗漏了什么,请告诉我。

你为什么要使用Regex?即使如此,你尝试了什么?科学记数法是否可以接受(1.2e-1)?是否需要前导零(例如,.123是否正确)?符号是否正确(+0.5)?尝试学习Regex@RohitIs此验证(字符串仅包含数字,你要检查)或匹配(查找与正则表达式匹配的子字符串)?如果您试图学习正则表达式(或任何东西),解决方案将略有不同。@tylerdurden,问一些只有具体的最终答案的问题不会有多大帮助。我认为“阅读、尝试、失败、重复直到成功”的方法在这里更合适;也许接下来会问一个问题:“我让X工作了,但为什么尝试Y却没有,为什么?”这也将匹配
1.9
。与边界不匹配?太多不必要的内容,并且缺少重要的锚定:
^(0\。\d*| 1\.0)$
你也忘了
0
1
。我不是来学习的,Tylerduden是。如果他想了解这是如何工作的,他可以想出额外的步骤。@MihaiStancu:希望他测试了代码。实际上有很多方法可以指定从0到1的数字,即使没有exp.form。正则表达式中的细微更改可以允许或不允许w some.it匹配大于1的数字,但我没有包含第一个反斜杠,因此表达式完全不匹配。但是,它将匹配
111
三次
1
,除非您添加类似
$
\s
[^0-9]
或类似的东西在多个数字之间强制执行某种分隔。它不匹配
1.1
,但它分别匹配第一个和第二个
1
。与
2.0
类似-它匹配
0
。虽然此代码片段可以解决问题,但确实有助于提高您的帖子质量。Rememb呃,你是在将来为读者回答这个问题,而那些人可能不知道你的代码建议的原因。@NathanOliver,我的目标是那些在形成表达式方面有困难但自己能阅读和理解的人。@NathanOliver,顺便说一句,被接受的答案也没有任何解释。你的nswer出现在审查队列中。它看起来不错,所以我只是评论说,如果有一个解释,它会更好。我不是要挑出你,只是添加了一些建设性的批评。如果你不想添加任何东西,你不必添加任何东西。你的正则表达式匹配的这部分
0*1\.?0*
,我也做了
.0
可选
1
。除此之外,还有很好的解决方案。还匹配负值
^(0.0*[1-9](\d+)?)$