我正在尝试在另一篇文章中增强给定答案:
^[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 :(得分:1)
您可以使用
^(?!0$)\d+(?:[,.][05])?$
请参阅demo
这将符合您要求的数字,并且由于开头的预测而排除0
- 仅限数字。
主要变化:
\d+
- 替换[1-9]\d*
以允许0
作为整数部分[,.]
- 替换\.
以允许逗号作为小数分隔符。0
- 数字例外。可以增强前瞻以禁止0.000
- 如输入:
^(?!0+(?:[,.]0+)?$)\d+(?:[,.][05])?$
请参阅another demo。
答案 1 :(得分:0)
答案 2 :(得分:0)
这应该这样做:
^(?!0*$)0?\d*([,.]5)?$
请参阅live demo。
这使用^\d*([,.]5)?$
来匹配您想要的内容,并使用^(?!0*([,.]0*)?$)
在所有形式中排除零,即它赢得了匹配0,000等