我正在尝试增强另一篇文章的给定答案:
^[1-9]\d*(?:\.[05])?$
分手:
^ # Start of input
[1-9] # match digit 1 to 9
\d* # match 0 or more of any digits
(?: # start of non-capturing group
\. # match a decimal
[05] # followed by digit 0 or 5
)? # end non-capturing group. (? makes this group optional)
$ # End of input
只有这一次正则表达式需要接受 0,5 或 0.5 以及 0,5 或 0.5 的增量
数字零是唯一无法匹配的。
已经尝试过:
(?!0).{1}|^[1-9]\d*(?:(,|\.)[05])?$
和
[^0]|^[1-9]\d*(?:(,|\.)[05])?$
你能帮忙吗?
最佳答案
你可以使用
^(?!0$)\d+(?:[,.][05])?$
参见 demo
这将匹配您所需的数字并将排除 0
-only 数字,这要归功于开始时的前瞻性。
主要变化:
\d+
- 替换了[1-9]\d*
以允许0
作为整数部分[,.]
- 替换\.
以允许逗号作为小数点分隔符。- 前瞻添加了一个
0
数字异常。
可以增强前瞻以禁止类似0.000
的输入:
^(?!0+(?:[,.]0+)?$)\d+(?:[,.][05])?$
参见 another demo .
关于匹配等于或大于 0.5 或 0.5 的正则表达式,增量为 0.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33677828/