如何添加验证特征/规则?

时间:2016-01-19 08:46:05

标签: python validation

我尝试从hacerrank Click开始锻炼 我不知道如何添加这些规则:
►它可能有4个一组的数字,用一个连字符分隔" - "。
►不得有4个或更多连续重复的数字。

这是我的代码:

how_many=1 #This version for tests, Here will be input() 
for i in range(how_many):
    string=input()
    formated_str=''.join(string.split('-', 4))
    if (char.isdigit() for char in formated_str) and len(formated_str)==16 and (formated_str[0]=='4' or formated_str[0]=='5' or formated_str[0]=='6'):
        print("Valid")
    else:
        print("Invalid")

问题:

我不知道formated_str=''.join(string.split('-', 4))会像他们想要的那样工作,我的意思是"►它可能有4个一组的数字,用一个连字符分隔" - &# 34;"以及如何实施第二条规则?

1 个答案:

答案 0 :(得分:2)

下面的函数首先删除代码字符串中的-,然后检查数字重复。正则表达式是以下r"\d*(\d)\1{3,}\d*"。 如果正则表达式匹配,则代码无效,函数返回False。否则,该函数拆分原始代码字符串,然后检查每个子字符串的长度。

import re

string   = "2134-4444-4412-3241"
string1  = "2134-4344-4412-3241"
string2  = "2134-4342-4412-3241"

def isValid(aString):
    pattern = r"\d*(\d)\1{3,}\d*"
    isValid = True

    rep_string = aString.replace('-', "")
    print(rep_string)
    if (not re.search(pattern, rep_string)):
        splitted = string.split('-')
        for split in splitted:
            if (len(split)!=4):
                return(False)
        return(isValid)
    else:
        return(False)

print(isValid(string))
print(isValid(string1))
print(isValid(string2))

我希望这个解决方案可以帮到你。这段代码将为您提供以下输出:

False
False
True