55

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

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

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

4

6 回答 6

62

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

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

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

于 2013-05-18T05:24:50.930 回答
24
/^\d+(,\d+)*$/
  • 至少一位数字,否则您将接受 1,,,,,4
于 2018-03-10T05:34:33.047 回答
7
[0-9]+(,[0-9]+)+

一般来说,这对我来说更适合逗号分隔的数字,例如:1,234,933

于 2019-01-21T09:03:35.933 回答
1

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

^[1-8](,[1-8])+$
于 2013-05-18T05:39:38.560 回答
1

如果您正在使用 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')]
于 2020-03-06T10:12:29.577 回答
0

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

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

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

 ^[1-8](?:,[1-8])*$
于 2013-05-18T05:24:31.393 回答