6

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

Min : 0
Max : 1

可能的值;

0.1
0.99
0.365

我怎样才能用正则表达式成功?

4

9 回答 9

10

作为 javascript 正则表达式文字:

 /^(0(\.\d+)?|1(\.0+)?)$/
于 2013-01-22T15:50:52.820 回答
6
0(\.\d+)?|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

如果您需要它来匹配整个字符串,那么您将需要分别代表字符串开头和字符串结尾的插入符号和美元符号,如^(0(\.\d+)?|1\.0)$

此外,如果您想查找可能的负数,您需要在前面添加一个可选的减号,例如 in ^-?(0(\.\d+)?|1\.0)$。当然,对于指数,模式需要改变。

于 2013-01-22T15:34:26.387 回答
3

而已:

/^(0+\.?|0*\.\d+|0*1(\.0*)?)$/
于 2015-12-16T18:02:34.447 回答
2

这个正则表达式应该做得很好:

/((0(\.[0-9]*)?)|(1(\.0)?))/

除非您计划匹配指数形式的浮点数。

于 2013-01-22T15:24:12.463 回答
2

这对我有用:

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

还是我错过了什么?:)

于 2013-01-22T15:26:56.060 回答
1

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

\+?(0(\.[0-9]+)?|1(\.0+)?)
于 2013-01-22T15:29:55.920 回答
1

一个通用的解决方案:

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

格式化:

 ^     
 0* 
 (?:
      (?:
           0 
           (?: \. \d* )?
        |  \. \d+ 
      )
   |  
      1 
      (?: \. 0* )?
 )
 $
于 2015-12-16T17:57:26.817 回答
0

只需阅读有关正则表达式的简介。希望这有效!

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

让我知道我是否遗漏了什么。

于 2019-04-12T11:58:38.720 回答
0

^(?:(?<!\d*[1-9]\.?0*)(?:(?:0+(?:\.\d+)?)|(?:\.\d+)|(?:1(?!\.0*[1-9]+)(?:\.0+)?)))$

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

0 0.5 .5 1 1.0 1.000

于 2017-01-10T06:06:57.420 回答