Ter*_*ado 3 python regex python-3.x
我只需要接受输入作为数值0 to 100,integers并且floats包含最大 two小数位,并编写正则表达式来检查这些条件.
例如,我希望它接受以下值:
0(min), 0.1, 1, 11, 11.1, 11.11, 100(max).
Run Code Online (Sandbox Code Playgroud)
但不是:
-1, 100.1, 111, 1+1, .1, etc.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出了^\d?\d+(\.\d\d?)?$它,但它有一堆问题.
刚才在提交本,我看到这个链接中类似的问题侧边栏有什么似乎是解决("^((?:|0|[1-9]\d?|100)(?:\.\d{1,2})?)$"),但它也接受100.01来100.99.除此之外,这是一个非常小的问题,它应该工作.
但是有人知道如何修补那个特定的位吗?
100 这是唯一真正的例外,所以它应该相当简单:
^(?:100|\d{1,2}(?:\.\d{1,2})?)$
https://regex101.com/r/Rr0gs4/1
编辑:也允许100.0和100.00:
^(?:100(?:\.00?)?|\d{1,2}(?:\.\d{1,2})?)$
根据您获得输入的方式,简单地检查数值可能更容易,更快捷.
def acceptable(str_val):
try:
return 0 <= float(str_val) <= 100
except ValueError:
return False
acceptable('1.11')
# True
acceptable('abc')
# False
acceptable('100.0')
# True
acceptable('100.1')
# False
Run Code Online (Sandbox Code Playgroud)