我正在尝试验证一个包含1-8数字的逗号分隔列表。
例如,2,4,6,8,1
是有效的输入。
我尝试了[0-8,]*
,但它似乎接受1234
作为有效值。它不要求逗号,并且让我输入一个大于8的数字。 我不确定原因所在。
我正在尝试验证一个包含1-8数字的逗号分隔列表。
例如,2,4,6,8,1
是有效的输入。
我尝试了[0-8,]*
,但它似乎接受1234
作为有效值。它不要求逗号,并且让我输入一个大于8的数字。 我不确定原因所在。
[0-8,]*
将匹配您字符串中任何位置零个或多个连续的0
到8
或,
。你需要更像这样的东西:
^[1-8](,[1-8])*$
^
匹配字符串的开头,$
匹配字符串的结尾,确保你检查了整个字符串。它会匹配一个数字,以及在它后面的逗号加数字的零个或多个实例。
^[0-9]+(,[0-9]+)*$
(因为标题 - Comma Separated Numbers Regex - 比 OP 在问题正文中描述的要广泛) 。 - Wiktor Stribiżew^\d+(,\d+)*$
,因为 \d
表示“数字”,或者在十进制中表示 [0-9]
。 - chharvey\d
在一些正则表达式引擎(如POSIX)中不受支持,因此在只有一个regex
标签的问题上,使用[0-9]
更为安全。这就是为什么我在我的答案中没有使用非捕获组的原因。 - Wiktor Stribiżew/^\d+(,\d+)*$/
1,22, 3 , 4444 , 5
,则正则表达式为 ^\s*\d+\s*(,\s*\d+\s*)*$
。如果您的用户倾向于在逗号后添加空格,这将非常有用。 - undefined[0-9]+(,[0-9]+)+
对于一般的逗号分隔数字,例如:1,234,933,我更倾向于使用这种方法。
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')]
^[1-8](,[1-8])+$
^[1-8](,[1-8])*$
如果您不想记住括号,请在括号中添加?:
,如下所示:
^[1-8](?:,[1-8])*$
([0-8],)+
。 - Asad Saeeduddin