我试图允许用户输入字母数字,下划线和空格作为名称.我一直在if not re.search(r'^[\w-]+$', name):用来检查名称是否包含除字母数字,下划线和空格以外的任何内容.但在这里我只能输入一个单词,而不是多个单词.我究竟做错了什么?
你没有做任何明显错误的事情.你的问题也不完全清楚,所以我会尝试解决几个可能的问题.
在你的正则表达式中,你有\w,根据re文档,它只是字母数字字符和下划线.你所不包括的是空格字符,所以用空间(包括如果它是分离的姓和名)的任何名称将由您的正则表达式匹配,因此转向False由not.您应该怎么做以检查是否有任何非字母数字字符/下划线/空格如下:
if not re.search(r'^[\w- ]+$', name):
Run Code Online (Sandbox Code Playgroud)
或者,如果您出于某种原因还关注newlines(\n)或tabs(\t)以及其他类型的空格:
if not re.search(r'^[\w\s- ]+$', name):
Run Code Online (Sandbox Code Playgroud)
那是因为正则表达式一次只能搜索一个字符串.如果要检查多个名称,则应针对每个名称运行正则表达式,格式如下:
# assuming name_list is a list of name strings
for name in name_list:
if not re.search(r'^[\w- ]+$', name):
# do whatever
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1796 次 |
| 最近记录: |