HTML表单返回给我一个用户输入的数字字符串。如何使用正则表达式查看它是否可以为数字。我不仅想剥离逗号,看看是否可以将其强制转换为int,而且我也不喜欢locale.atoi方法,因为即使字符串是无意义的,字符串也将转换为数字(例如locale.atoi('01,0,0'
)得出100)。
注意:仅当字符串包含逗号时,才会进行此验证
re模式应为:
第一个字符为1-9(不为零)第二个和第三个字符为0-9,然后是3位数字1-9,并在0和2之间重复逗号(999,999,999,999是程序中可能的最大数字),最后是3位数字1-9
compiled = re.compile("[1-9][0-9]{0,2},(\d\d\d,){0,2}[0-9]{3}")
不能正确匹配字符串的结尾,例如:
re.match(compiled, '123,456,78')
匹配。我做错了什么?
更紧凑
我建议一些更紧凑的东西:
^[1-9][0-9]{0,2}(?:,[0-9]{3}){0,3}$
观看演示
^
断言我们是在字符串的开头[1-9]
匹配我们的第一个数字[0-9]{0,2}
最多匹配两个数字(?:,[0-9]{3})
匹配一个逗号和三个数字...$
断言我们在字符串的末尾要验证,您可以执行以下操作:
if re.search("^[1-9][0-9]{0,2}(?:,[0-9]{3}){0,3}$", subject):
# Successful match
else:
# Match attempt failed
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句