如何制作只允许 0.50 向 100.00 的值的正则表达式。但是,您应该只能在每个舍入数字之间添加0.50。
例如: 12.50或12.5
不是: 42.1或1.35
正则表达式是我迄今为止在编码体验中遇到的最困难的事情。这就是我在这里发帖以了解其复杂性并了解其工作原理的原因。
感谢所有帮助。
答案 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