Skip to main content
 首页 » 编程设计

python之理解 Python 中的研究

2025年05月04日13freeliver54

我正在尝试允许用户输入字母数字、下划线和空格作为名称。 我一直在使用 if not re.search(r'^[\w-]+$', name): 检查名称是否包含字母数字、下划线和空格以外的任何内容。但是这里我只能输入一个词,不能输入多个。我做错了什么?

请您参考如下方法:

你没有做任何明显错误的事情。您的问题也不完全清楚,所以我将尝试解决几个可能的问题。

为什么正则表达式只接受一个词?

在你的正则表达式中,你有 \w,根据 re documentation , 只是字母数字字符和下划线。您不包含的是空格字符,因此任何带有空格的名称(包括分隔名字和姓氏的名称)都将与您的正则表达式匹配,因此变为 False 由 不是 。您应该如何检查是否有任何非字母数字字符/下划线/空格如下:

if not re.search(r'^[\w- ]+$', name): 

或者,如果您出于某种原因还担心换行符 (\n) 或制表符 (\t) 和其他类型的空格:

if not re.search(r'^[\w\s- ]+$', name): 

为什么我一次只能检查一个名字?

那是因为正则表达式一次只会搜索一个字符串。如果你想让它检查多个名字,你应该对每个名字运行正则表达式,格式如下:

# assuming name_list is a list of name strings 
for name in name_list: 
    if not re.search(r'^[\w- ]+$', name): 
        # do whatever