Форум сайта python.su
Здравствуйте!
Помогите с регулярным выражением, при регистрации пользователя нужно проверить его имя !
В имени могут быть только (a-z), (0-9), _ (нижний пробел не должен быть в начале или конце имени)
Я не особо силен в регулярных, да и сталкиваюсь с ними редко !
Отредактировано andreiru (Июль 18, 2013 09:40:56)
Офлайн
andreiru
Здравствуйте!Помогите с регулярным выражением, при регистрации пользователя нужно проверить его имя !В имени могут быть только (a-z), (0-9), _ (нижний пробел не должен быть в начале или конце имени)Я не особо силен в регулярных, да и сталкиваюсь с ними редко !
^[a-z\d]{1}[a-z\d]+[a-z\d]{1}$
Офлайн
>>> import re >>> >>> def test_name(name): ... return name != '' and '_' not in (name[0], name[-1]) and \ ... re.search(r'^[a-z\d_]+$', name) is not None ... >>> test_name('') False >>> test_name('_') False >>> test_name('_a') False >>> test_name('a_') False >>> test_name('a_a') True >>>
>>> import string >>> >>> validset = set(string.ascii_lowercase + string.digits + '_') >>> >>> def test_name(name): ... return name != '' and '_' not in (name[0], name[-1]) and \ ... not set(name) - validset ... >>> test_name('') False >>> test_name('_') False >>> test_name('_a') False >>> test_name('a_') False >>> test_name('a_a') True >>>
Отредактировано py.user.next (Июль 19, 2013 13:13:28)
Офлайн
py.user.next, спасибо большое !
Отредактировано andreiru (Июль 20, 2013 10:48:00)
Офлайн
import re def test_name(name): return re.match(r'([a-z\d][a-z\d_]*[a-z\d]$)|([a-z\d]$)', name) is not None
Отредактировано Shaman (Июль 21, 2013 06:57:54)
Офлайн