【问题标题】:Python Checking usernames with regular expressions [closed]Python使用正则表达式检查用户名[关闭]
【发布时间】:2019-04-12 11:57:15
【问题描述】:

我有一个需要帮助的任务。任务是创建一个 python 脚本,要求用户输入所需的用户名。用户名必须如下:“a11aaaaa”。 所以从一个字母开始,2个数字,5个字母。这是用户名外观的规则,如果给定的输入不匹配,用户应该能够再试一次,直到正确为止。 感谢您的帮助!

【问题讨论】:

标签: python input evaluate


【解决方案1】:

正如我最近从 SO 上的另一位用户那里了解到的,\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='')

【讨论】:

    【解决方案2】:
    ^\w{2}\d{2}\w{5}$   
    

    您可以使用这个方便的网站来试验正则表达式:https://regex101.com/

    【讨论】:

      【解决方案3】:

      你可以这样做:

      import re
      
      while True:
          name = input('Enter your name')
          if re.match('^\w\d{2}\w{5}$', name):
              break
      

      【讨论】:

        【解决方案4】:

        试试这个:

        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")
        

        【讨论】:

        • 试过了,但我仍然可以输入例如:a18aaaa1,我仍然得到“有效的用户名”。
        • 我编辑了正则表达式,但它可以容纳大写字母。如果您想忽略大写字母,请将[A-Za-z] 更改为[a-z]
        猜你喜欢
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-22
        • 2017-11-13
        • 1970-01-01
        • 2021-09-17
        相关资源
        最近更新 更多