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

如何用Python正则表达式匹配“Firstname Lastname”格式的全名

匹配「Firstname Lastname」格式姓名的实现方法

正则规则说明

你需要匹配的格式核心要求为:仅包含两部分英文字母,中间仅存在一个空格,无多余空格或其他字符,对应正则表达式为:
^[a-zA-Z]+\s[a-zA-Z]+$
规则拆解:

  • ^ 标记字符串的起始位置,避免姓名前出现多余字符
  • [a-zA-Z]+ 匹配至少1个大小写英文字母,对应名字部分
  • \s 匹配名字和姓氏中间的1个空格
  • [a-zA-Z]+ 匹配至少1个大小写英文字母,对应姓氏部分
  • $ 标记字符串的结束位置,避免姓名后出现多余字符

你之前写的正则存在两个核心问题:

  • 没有添加量词+,默认仅能匹配单个字符,无法匹配长度超过1的姓名
  • 将空格写入了字符集[a-zA-Z a-zA-Z]中,等价于允许任意位置出现任意数量的空格,无法保证仅中间有一个空格

修正后完整代码

# 首先导入正则模块,你之前的代码漏了这步会运行报错
import re

user_input = input("请输入你的全名: ")
def valid_name():
    name_regex = re.compile(r'^[a-zA-Z]+\s[a-zA-Z]+$')
    # 使用fullmatch可以直接校验整个字符串是否完全匹配规则,和加^$效果一致
    name_match = re.fullmatch(name_regex, user_input)
    if name_match:
        print(user_input)
    else:
        print('请按照「名 姓」的格式输入姓名,例如 John Doe')

valid_name()

可选扩展

如果需要支持带撇号、连字符的常见英文姓名(例如 O'Neil、Anne-Marie),可以把正则修改为:
^[a-zA-Z'-]+\s[a-zA-Z'-]+$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03