我想在“。”之前只有1到5位数字。和“。”后面的0到2位数字。 这是我到目前为止正则表达式。
^\d{1,5}\.?\d{0,2}$
1.00 -- match
11.01 -- match
111.10 -- match
1111.52 -- match
11111.23 -- match
.12 -- no match ... want to match
123456 -- match ... don't want to match because can take up to 5 integers before decimal
1234567 -- match ... don't want to match because can take up to 5 integers before decimal
任何人都可以帮忙吗?
答案 0 :(得分:4)
我认为你需要在带小数点的数字和没有数字的数字之间进行替换:
^\d{1,5}|\d{0,5}\.\d{1,2}$
修改强>
感谢user1884032指出丢失的括号:
^(\d{1,5}|\d{0,5}\.\d{1,2})$
答案 1 :(得分:1)
/^(\d{0,5}\.\d{1,2}|\d{1,5})$/
答案 2 :(得分:0)
你需要这个:
^\d{1,5}\.\d{0,2}$
我删除了?
,这使点可选。
说你想匹配.12
与你的规范相矛盾 - 在点之前没有1-5位数字。您的意思是{0-5}
吗?
答案 3 :(得分:0)
迟到总比不到好:
^([\d]{0,5})(\.[\d]{1,2})?$
两组:
0.12
为.12
。简单而完美:)
答案 4 :(得分:0)
我在python3中实现的最简单的方法是-
import re
p = re.compile(r'^\d{2}.\d{2}')
print(p.findall('12.59, 11.789, 10.6 lords a-leaping'))
输出-['12.59']
答案 5 :(得分:-1)
有两个不同的问题:
如果要在“。”之前匹配0到5位数。所以你需要第一部分说d{0,5}
而不是d{1,5}
。
而不是选择“。”接下来是两个字符,你应该有“。”如果后面有字符,但如果后面没有字符则没有点。如果最后两个位于“。”之后,您将只得到7位数。
^\(d{0,5}\.\d{0,2})|(d{0,5}\.?)$
表示
EITHER
0-5位,然后是小数点,然后是0-2位数
OR
0-5位,后跟可选的小数点
此格式还会检测您未在测试中列出的该范围内的合法数字,例如12345.
和0.12
答案 6 :(得分:-1)
试试这个:
/^\d{0,5}\.\d{0,2}$/