如何验证字符在输入字符串中出现的次数



例如:我希望我的用户输入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

如果分隔符后面缺少字符,则上述方法将纠正错误。

相关内容

  • 没有找到相关文章

最新更新