我正在尝试创建正则表达式
,它可以采用 b/w 0 - 5000
范围内的数字,最多 一位小数
.
i.e. 5000 , 4999.9 , 25.0 , 2500.9
我试过使用正则表达式,但不知道我需要在哪里添加小数点。
^0*(?:[0-9]|[1-9][0-9][0-9]?|[1-4][0-9][0-9][0-9]|5000)$
最佳答案
小数部分可以用 (?:[.][0-9])?
子模式匹配一个或零序列的文字点 [.]
后跟一个数字 ([0-9]+
)。但是,您需要稍微重新组合正则表达式:5000
必须是一个单独的替代项,因为它只能有 .0
小数部分:
^(?:0*(?:[0-9]|[1-9][0-9][0-9]?|[1-4][0-9][0-9][0-9])(?:[.][0-9])?|5000(?:[.]0)?)$
^^ ^^^^^^^^^^^^^^ ^^^^^^^^^
参见 regex demo
分割:
^
- 字符串的开始(?:0*(?:[0-9]|[1-9][0-9][0-9]?|[1-4][0-9][0- 9][0-9])(?:[.][0-9])?
-0
到4999
带或不带前导的数字>0
符号,后跟一个或零。
+ 任何数字(出现一次)|
- 或者...5000(?:[.]0)?)
-5000
可选地后跟一个或零序列.0
。$
- 字符串结尾
关于正则表达式 - 最多 5000 个小数点后 1 位数字的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553011/