例如:我希望我的用户输入5个用逗号分隔的数字。。。
如果我想确保逗号(,(只出现4次,否则他们将不得不再次输入字符串,我该如何验证?
示例问题:"请输入5个数字,全部用逗号分隔-">
错误答案:2,3或4,5,6,7,8,9
好答案:2,3,4,5,6(4个逗号,5个数字(
我的想法是我应该使用regex。如果有人有其他想法,请分享。谢谢
您不需要正则表达式,这可以通过基本的Python函数来完成:
answer = '2,3,4,5,6'
split_answer = answer.split(',')
if len(split_answer) == 5 and all(number.strip().isdigit() for number in split_answer):
print ('good answer')
else:
print ('bad answer')
使用行answer.split(',')
,您可以测试在单个逗号上拆分后保留的元素数量;使用all(..)
,您可以测试这些元素中的每一个是否仅由数字组成。它内部的strip
是为了确保首先删除周围的空白。
您可以使用此正则表达式精确匹配5个逗号分隔的数字,
^d+(?:,d+){4}$
这里,
^
-->开始输入d+
-->匹配一个或多个数字(?:,d+){4}
-->将逗号后跟一个或多个数字与此模式精确匹配4次$
-->输入结束
演示
如果您的输入可能有可选的空格,您可以使用以下regex。
^s*d+s*(?:,s*d+s*){4}$
以下是python示例代码,
import re
arr = ['2,3','4,5,6,7,8,9','2,3,4,5,6']
for s in arr:
if re.match(r'^d+(?:,d+){4}$', s):
print(s + ' --> Match')
else:
print(s + ' --> Do not Match')
哪个打印,
2,3 --> Do not Match
4,5,6,7,8,9 --> Do not Match
2,3,4,5,6 --> Match
一种非常蟒蛇的方式是:
sample = "1,3,23,12,"
if(len(sample.split(","))<sample.count(",")) and sample.count(",") ==4:
return True
else:
return False
如果分隔符后面缺少字符,则上述方法将纠正错误。