2013-05-24 3 views
2

Я хочу проверить логин с регулярным выражением.Нормальный логин regex

  1. Логин должен содержать по крайней мере 3-16 символов ({3,16})
  2. Логин может содержит только буквенно-цифровые, - и _([a-zA-Z0-9_-])
  3. Логин может НЕ содержат __, --, -_, _-((?!--|__|-_|_-))
  4. Вход может НЕ содержать - или _ в конце. ((?!-|_))

Как совместить все выражения в одном?

EDIT:
5. Вход можете НЕ начать с - или _

+0

@ zb226 См редактировать – Patashu

+0

'([a-zA-Z0-9] | [\ -_] [a-zA-Z0-9]) +' получает все, кроме правила 1. – Patashu

ответ

2

^(?!_|-)([a-zA-Z0-9]|[\-_](?!_|-|$)){3,16}$

Матчи

-The начало строки

-Проверяет что первый символ не _ или -

-a маркер, который представляет собой (один буквенно-цифровой) ИЛИ (один дефис/подчеркнуть, что не следует дефис/подчеркнуть/конец строки)

-The выше маркер, от 3 до 16 раз

-The конец строки

+0

Спасибо, я забыл, логин может ** НЕ ** начинаться с '_' или' -', как? –

+0

@Shamil Yakupov Нравится? – Patashu

+0

Да, это работает. Благодарю. –

0

Вы можете использовать положительные утверждения:

  • Логин должен содержать по крайней мере 3-16 символов ({3,16})

    (?=.{3,16}$) 
    
  • Войти Может содержать только буквенно-цифровые символы, - и _ ([A-Za-Z0-9_-])

    (?=[a-zA-Z0-9_-]*$) 
    
  • Войти НЕ может содержать , -, -_, - ((?! - | | - | _-))

    (?!.*(?:__|--|-_|_-)) 
    
  • Войти НЕ могут containn ни начать с - или _

    (?![_-]|.*[_−]$) 
    

Результат:

^(?![_-]|.*(?:__|--|-_|_-)|.*[_-]$)[a-zA-Z0-9_-]{3,16}$ 
Смежные вопросы