我正在尝试创建regular expression
,其中可以使用范围为b / w 0 - 5000
且最多为one decimal place
的数字。
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 :(得分:2)
小数部分可以定义为(?:[.][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
符号,后跟一个或零.
+任意数字(一次出现)< / LI>
|
- 或...... 5000(?:[.]0)?)
- 5000
可选地后跟一个或零个序列.0
。$
- 字符串结尾答案 1 :(得分:2)
我能想到的最好的是:
/^(5000(\.0)?|([0-4]?\d?\d?\d)(\.\d)?)$/
它基本上将5000作为一个单独的案例,而对于所有其他情况,它更通用,如果有4位数,则将最高有效数字限制为4。 小数点(+一位数)是可选的。
修改强> 更彻底的模式细分:
|
的左侧是5000的特殊情况。它只是数字5000,带有可选的小数点后跟零。|
的右侧:您可以测试它是否适合here。