Regexp:0.50到100.00

时间:2017-03-15 21:17:27

标签: javascript html regex

如何制作只允许 0.50 100.00 的值的正则表达式。但是,您应该只能在每个舍入数字之间添加0.50。

例如: 12.50或12.5

不是: 42.1或1.35

正则表达式是我迄今为止在编码体验中遇到的最困难的事情。这就是我在这里发帖以了解其复杂性并了解其工作原理的原因。

感谢所有帮助。

2 个答案:

答案 0 :(得分:1)

const number = 0.5; /0\.50|0\.5|^([1-9]|[1-9][0-9])\.[5 | 50 | 0]|100\.0/.test(number);

检查字符串是否为0.5或0.50或
数字1-9或数字10-99,0.5 .50或.0或
100.0
https://repl.it/GX4l/0

我不知道你为什么要用正则表达式做这个。如果要更改范围,则必须执行大量工作来重写正则表达式。您可以测试范围,看它是否是.5的倍数 someNumber >= .5 && someNumber <= 100 && someNumber%.5 == 0

答案 1 :(得分:0)

这样的东西? ^(?:(?:\d|[1-9]\d)\.[05]0?|100\.00?)$

如果需要,您可以使用字边界\b替换锚点。

解释

 ^                    # BOS
 (?:
      (?:                  #=
           \d                   # 0-9
        |                     # or,
           [1-9] \d             # 10-99
      )                    #=
      \. [05] 0?           # .0 or .5   +   optional 0

   |                     # or, 

      100\.0 0?            # 100.0   +   optional 0
 )
 $                    # EOS

如果你想让小数部分成为可选的,那就是这个 ^(?:(?:\d|[1-9]\d)(?:\.[05]0?)?|100(?:\.00?)?)$

解释

 ^                        # BOS
 (?:
      (?:                      # Required
           \d                       # 0-9
        |                         # or,
           [1-9] \d                 # 10-99
      )
      (?: \. [05] 0? )?        # Optional   .0 or .5 +  optional 0

   |                         # or, 

      100                      # Required 100 
      (?: \.0 0? )?            # Optional   .0 + optional 0
 )
 $                        # EOS