Python регулярное выражение для захвата группы цифр в начале или в конце последовательности букв - PullRequest
0 голосов
/ 29 февраля 2020

Привет всем, я новичок в python. Я пытаюсь определить ввод с помощью python Кто-нибудь может помочь?

Проверка имени пользователя с этими ограничениями.

  1. имя пользователя должно быть 8-12 символов.
  2. должен содержать только цифры и строчные буквы
  3. должен содержать только два числа, может быть в конце или в начале имени пользователя

пример: 12username

это то, что я получил до сих пор.

import re 

def identify_usr(): 
    uname = input("input username: ")
    reg = "^(?=.*[a-z])(?=.*[0-9])(?=.*\d)[0-9a-z]{8,12}$"

    pat = re.compile(reg)
    match = re.search(pat, uname)

    if match:
        print("Username is valid")
    else :
        print("Username is Invalid")

if __name__ == '__main__': 
    identify_usr()

вывод

введите имя пользователя: 66jkdk

Имя пользователя действительно

но он все еще не имеет спецификации выше, «только два числа, могут быть в конце или в начале имени пользователя», любая идея будет высоко оценена. спасибо.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Можно использовать следующее регулярное выражение:

/\A(?:[a-z]{6,10}\d{2}|\d{2}[a-z]{6,10})\z/

Эти строки соответствуют регулярному выражению:

"abcdefgh45"
"45abcdefgh"

Это не так:

"2acdefgh45"
"45abcdefghijk" 
"abcdefghijk45"
"abcde45"

Регулярное выражение может сделать самодокументирование, написав его в режиме свободного пробела.

/
\A                 # match beginning of string
(?:                # begin non-capture group
  [a-z]{6,10}\d{2} # match 6-10 lc letters followed by 2 digits
  |                # or
  \d{2}[a-z]{6,10} # match 2 digits followed by 6-10 lc letters
)                  # end non-capture group
\z                 # match end of string
/x                 # free-spacing regex definition mode
0 голосов
/ 29 февраля 2020

Ваше регулярное выражение кажется подозрительно сложным. Как насчет следующего?

^([a-z]{6,10}\d{2})|(\d{2}[a-z]{6,10})$

Который правильно определяет ваш пример как недействительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...