我有一项需要帮助的任务。任务是创建一个python脚本,要求用户输入所需的用户名。用户名必须如下:“ a11aaaaa”。 因此,以字母,2x数字,5x字母开头。这是用户名外观的规则,如果给定的输入与之不匹配,则用户应能够再次尝试直到正确为止。 感谢您的帮助!
答案 0 :(得分:0)
^\w{2}\d{2}\w{5}$
您可以使用此方便的网站来测试正则表达式:https://regex101.com/
答案 1 :(得分:0)
您可以执行以下操作:
import re
while True:
name = input('Enter your name')
if re.match('^\w\d{2}\w{5}$', name):
break
答案 2 :(得分:0)
尝试这个:
import re
uname = input("Enter your username: ")
regex = re.compile(r"^[A-Za-z]{1}\d{2}[A-Za-z]{5}$")
if regex.findall(uname):
print ("Valid username")
else:
print ("Invalid username")
答案 3 :(得分:0)
最近我从另一个用户那里了解到,\w
包括 \d
。因此,如此处的某些用户所建议的,'^\w\d{2}\w{5}$'
将匹配12345678
。
要解决此问题,只需明确指定字符类:
import re
regex = re.compile('^[A-Za-z]\d{2}[A-Za-z]{5}$')
while True:
password = input('Please enter a password: ')
if regex.search(password):
print('Yay! Your password is valid!')
break
else:
print("Oh no, that's not right. You need a letter, then two numbers, then five letters. ", end='')