如何验证指定字符串是否包含4个字母与3个数字
字符串4字母+3数字校验实现
你当前的代码仅校验了字符串长度为7、倒数第三位为数字,逻辑有明显漏洞,既会漏判数字不在倒数第三位的合法输入,也无法过滤含特殊字符、字母/数字数量不符合要求的输入。
修正后实现(直观计数法,易维护)
def emne_validator(emne): letter_count = sum(char.isalpha() for char in emne) digit_count = sum(char.isdigit() for char in emne) # 刚好4个字母、3个数字,总长度7排除其他字符 if letter_count == 4 and digit_count == 3 and len(emne) == 7: print("Valid input") else: print("Invalid input")
可选正则实现(适合熟悉正则的场景)
import re def emne_validator(emne): # 顺序不限,刚好4个字母+3个数字,总长度7 match_rule = r'^(?=(?:[^a-zA-Z]*[a-zA-Z]){4}[^a-zA-Z]*$)(?=(?:\D*\d){3}\D*$).{7}$' print("Valid input" if re.fullmatch(match_rule, emne) else "Invalid input")
需求调整说明
如果不需要限制总长度,只要字符串包含至少4个字母和3个数字,把计数判断中的==改为>=、删除长度校验即可,正则也可对应调整规则。
内容的提问来源于stack exchange,提问作者Sondre
相关产品推荐
相关产品推荐

