【发布时间】:2023-01-30 18:34:26
【问题描述】:
我正在尝试创建一个函数,如果用户输入的用户名与正则表达式匹配则访问该函数。这是我的代码:
def regular_expression():
rules = "[A-Z]^{1}[a-zA-Z0-9]+[0-9]$"
while True:
username = str(input("Username Must have:\n"
"- First character must be an upper case letter\n"
" - Middle can be any letter or number\n"
"- Last character must be a number\n"
"> "
))
if re.fullmatch(rules, username):
print("Accepted")
这是我收到的错误:
return _compile(pattern, flags).fullmatch(string)
p = sre_compile.compile(pattern, flags)
p = sre_parse.parse(p, flags)
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
source.tell() - here + len(this))
re.error: multiple repeat at position 9
【问题讨论】:
-
无法量化字符串的开头。您需要删除
^和$,因为您正在使用re.fullmatch。另外,删除{1},它总是多余的。 -
还有一些字符串长度问题(是否可以是 1 个或 2 个字符长?)
-
请澄清要求,以消除对此处实际意图的任何疑问。
rules = "[A-Z][a-zA-Z0-9]+[0-9]"有效吗?