Regex 正则表达式-验证最多为5000个数字,小数点后1位的数字
我正在尝试创建Regex 正则表达式-验证最多为5000个数字,小数点后1位的数字,regex,Regex,我正在尝试创建正则表达式,它可以使用范围为b/w0-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必
正则表达式
,它可以使用范围为b/w0-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)?)$
^^ ^^^^^^^^^^^^^^ ^^^^^^^^^
见
细分:
-字符串的开头^
-(?: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(\.0)?|([0-4]?\d?\d?\d)(\.\d)?)$/
它基本上将5000视为一个单独的案例,而对于所有其他案例,它更为通用,在有4位数字的情况下,将最高有效位限制为4位。小数点(+一位数)是可选的 编辑: 更彻底的模式分解:
|
的左侧是5000的特例。它只是一个数字5000,后面有一个可选的小数点和一个零|
的右侧:A.0-4之间的可选数字
B后跟另外两个可选数字
C后跟一个必填数字
D后跟一个可选的小数点和一个位数
您可以测试它是否合适。所以,
5000.2
是不允许的,对吗?5000.000
?不允许5000.2不允许5000.000,因为它有3位小数。5000.0很好。啊,我明白了,我现在调整了答案。嗯,我想现在,它是正确的。我现在将添加描述。我不确定您是否希望在5000
之前允许可选的前导零。如果你这样做了,你需要。注意,另一个答案可能更适合使用。我只是保留了原始样式,以帮助理解向现有正则表达式添加任何内容的技术。我知道我不必继续回答:),但请提供模式解释。您的回答也是正确的,我将保留此内容以供将来参考。谢谢你的解释,干得好!这就是回答regex相关问题的方法:始终添加详细描述。在这里,每一分钟的符号都可能使整个代码崩溃,因此必须解释正则表达式模式+1.