如何在python中使用正则表达式,从而不允许使用未包含的字符?

如何在python中使用正则表达式,从而不允许使用未包含的字符?,python,regex,Python,Regex,代码如下: import re name = input("Enter a username: ") y = len(name) for i in range (0, y): valid = re.match("[A-Za-z0-9!£$%^&*]", name[i]) if valid: print("Username valid") else: print("Username inavlid, try again") 当我输入的用户名仅包含正则表达式中的字符

代码如下:

import re
name = input("Enter a username: ")
y = len(name)
for i in range (0, y):
    valid = re.match("[A-Za-z0-9!£$%^&*]", name[i])
if valid:
    print("Username valid")
else:
    print("Username inavlid, try again")
当我输入的用户名仅包含正则表达式中的字符时,它将打印用户名有效;当我输入的用户名仅包含未包含的字符时,将打印用户名无效,请重试

但是,当我输入允许字符和不允许字符的组合时,密码将被验证。我怎样才能做到即使输入的字符中有一个不在正则表达式中,程序也会说用户名无效


提前感谢。

语义错误是,即使之前没有匹配字符,您也会不断覆盖valid的内容


完全避免for循环,并将正则表达式更改为[A-Za-z0-9!£$%^&*]+$

当最后一个字符有效时,整个字符串被视为有效。每次重新写入有效值。使用valid=re.matchr'[A-Za-z0-9!£$%^&*]+$”,name您的re与整个字符串不匹配,但仅与其中的一部分匹配。使用^[A-Za-z0-9!£$%^&*]+$从头到尾进行匹配。@jbndlr re.match从开头开始,不需要^?else:valid=re.match[A-Za-z0-9!£$%^&*-\=+]+$,密码如果有效:printPassword valid:printPassword inavlid,请重试,因为它似乎不起作用。