You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写正则匹配用户名函数遇报错:multiple repeat at position 9 求助

正则表达式匹配用户名报错:multiple repeat at position 9

错误原因

你的正则表达式"[A-Z]^{1}[a-zA-Z0-9]+[0-9]$"存在两个问题:

  • 锚点位置错误:^是正则里的行起始锚点,你把它放在[A-Z]后面,导致正则引擎误把^当成了需要被重复限定的字符(前面的{1}是重复限定符),直接触发了"multiple repeat"解析错误。
  • 冗余语法:{1}完全多余,正则中单个字符默认就匹配1次,不需要额外声明。

另外你的代码还漏了import re,没导入模块的话运行还会报NameError。

修复方案

修正正则表达式,调整锚点位置,同时补全代码缺失部分:

import re

def regular_expression():
    # 修正后的正则:开头必须是大写字母,中间至少1个字母/数字,结尾必须是数字
    rules = "^[A-Z][a-zA-Z0-9]+[0-9]$"

    while True:
        username = 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")
            break  # 匹配成功后退出循环,避免无限输入
        else:
            print("Invalid username, try again.")

# 调用函数
regular_expression()

核心修正说明

  • 将^移到正则最开头,明确指定匹配字符串的起始位置
  • 移除冗余的{1},简化正则逻辑
  • 补充import re模块,解决未导入依赖的问题
  • 去掉不必要的str(input(...)),因为input()本身返回字符串类型
  • 添加不匹配时的提示信息,以及匹配成功后的循环退出逻辑,提升交互体验

内容的提问来源于stack exchange,提问作者charlie s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:20:35