Каким регулярным выражением можно воспользоваться для валидации имени пользователя?(username) | Python
передо мной встала задача отвалидировать введенное пользователем значение(имя пользователя). Необходимо, чтобы оно соответствовало требованиям
- Имя пользователя может содержать буквы латинского алфавита (a–z), цифры (0–9).
- Запрещено использовать амперсанд (&), собаку(@), знаки равенства (=) и сложения (+), скобки (<>), запятую (,), символ подчеркивания (_), апостроф ('), дефис (-) и точки.
Эти требования взяты из Gmail, но слегка откорректированы под проект.
Помогите, пожалуйста, с регуляркой. В регулярных выражениях я вообще 0.
Ответы (3 шт):
Автор решения: Zhihar
→ Ссылка
через регулярные выражения:
import re
text = 'test@/+test'
pattern = re.compile('[+,@]')
res = pattern.findall(text)
if res:
print("Нельзя!!!")
else:
print("Зя!!!")
но можно обойтись и без них в таком легком запросе:
text = 'test@/+test'
seq = '+@'
res = any([text.find(letter) != -1 for letter in seq])
if res:
print("Нельзя!!!")
else:
print("Зя!!!")
Автор решения: strawdog
→ Ссылка
import re
def validate(name: str)->bool:
if re.match(r"^[a-zA-Z0-9]+$", name):
return True
else:
return False
print(validate("Am9h31d0jn"))
print(validate("12"))
print(validate("john@doe"))
True
True
False
Автор решения: roddar92
→ Ссылка
Регулярное выражение можно упростить с помощью флага re.I, который позволяет искать строки, не обращая внимания на регистр:
import re
valid_pattern = re.compile(r"^[a-z0-9]+$", re.I)
def validate(name: str) -> bool:
return bool(valid_pattern.match(name))