18 lines
484 B
Python
18 lines
484 B
Python
import re
|
|
|
|
RESERVED_USERNAMES = {"login", "register", "api", "admin", "examples", "logout", "me", "google"}
|
|
|
|
|
|
def slugify(text: str) -> str:
|
|
text = text.lower().strip()
|
|
text = re.sub(r"[^a-z0-9\s-]", "", text)
|
|
text = re.sub(r"[\s_]+", "-", text)
|
|
text = re.sub(r"-+", "-", text)
|
|
return text.strip("-")
|
|
|
|
|
|
def is_valid_username(name: str) -> bool:
|
|
if name.lower() in RESERVED_USERNAMES:
|
|
return False
|
|
return bool(re.match(r"^[a-z0-9_-]{3,30}$", name))
|