逗号分隔数字正则表达式

时间:2013-05-18 05:21:03

标签: regex

我正在尝试验证数字1-8的逗号分隔列表。

即。 2,4,6,8,1是有效的输入。

我尝试[0-8,]*但似乎接受1234有效。它不需要逗号,而是让我输入大于8的数字。我不知道为什么。

6 个答案:

答案 0 :(得分:33)

[0-8,]*会匹配字符串中任意位置的08,的零个或多个连续实例。你想要更像这样的东西:

^[1-8](,[1-8])*$

^匹配字符串的开头,$匹配结尾,确保您正在检查整个字符串。它将匹配一个数字,加上零个或多个逗号实例,后跟一个数字。

答案 1 :(得分:3)

{{1}}
  • 至少一位数,否则你会接受1 ,,,,, 4

答案 2 :(得分:0)

您需要一个可以重复的数字+逗号组合:

 ^[1-8](,[1-8])*$

如果您不想记住括号,请将?:添加到parens中,如下所示:

 ^[1-8](?:,[1-8])*$

答案 3 :(得分:0)

您可以尝试使用此正则表达式:

^[1-8](,[1-8])+$

答案 4 :(得分:0)

如果您正在使用python并希望找出所有可能的匹配字符串,例如 XX,XX,XXX或X,XX,XXX 或12,000,1,20,000使用正则表达式

string = "I spent 1,20,000 on new project "
re.findall(r'(\b[1-8]*(,[0-9]*[0-9])+\b)', string, re.IGNORECASE)
Result will be --->  [('1,20,000', ',000')]

答案 5 :(得分:-1)

[0-9]+(,[0-9]+)+

这对我来说对1,234,933之类的数字更有效