gpt4 book ai didi

regex - 检查字符串是否为整数的正则表达式

转载 作者:行者123 更新时间:2023-12-04 16:49:41 26 4
gpt4 key购买 nike

HTML 表单返回用户输入的数字字符串。我如何使用正则表达式来查看它是否能够成为数字。我不想简单地去掉逗号,看看它是否可以转换为 int,我也不喜欢 locale.atoi 方法,因为字符串将评估为数字,即使它们是无意义的(例如 locale.atoi(' 01,0,0') 的计算结果为 100)。

注意此验证仅在字符串包含逗号时发生

重新模式应该是:

第一个字符是 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}$

参见 the demo

  • ^ 断言我们在字符串的开头
  • [1-9] 匹配我们的第一个数字
  • [0-9]{0,2} 最多匹配另外两个数字
  • (?:,[0-9]{3}) 匹配一个逗号和三个数字...
  • 0 到 3 次之间
  • $ 断言我们在字符串的末尾

要验证,您可以这样做:

if re.search("^[1-9][0-9]{0,2}(?:,[0-9]{3}){0,3}$", subject):
# Successful match
else:
# Match attempt failed

关于regex - 检查字符串是否为整数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com