How to prevent usernames from containing @/./+/-/_.?

后端 未结 3 1880
故里飘歌
故里飘歌 2021-01-27 09:38

I\'m using django-allauth, and for some reason the username default allows:

\"letters, digits and @/./+/-/_.\"

How can I ensure usernames are strictly alphanumer

3条回答
  •  [愿得一人]
    2021-01-27 10:01

    You could use a regex expression to ensure that a username contains only allowed characters. For alphanumeric characters the following should do the trick:

    import re
    def is_valid_username(username):
        pattern = re.compile('([a-zA-Z]+|\d+)')
        return ''.join(re.findall(pattern, username)) == username
    

    Here's an example of the output:

    username_list = ["WhatAGre4tUsern4me", "548ThatISAgoodUsername005",
                     "CheckOutMy_Username", "It'sAUsern@me"]
    print([is_valid_username(u) for u in username_list])
    >>> [True, True, False, False]
    

提交回复
热议问题