2010-11-13 2 views
5

Я пытаюсь выяснить, как настроить выражение регулярных выражений при выполнении следующих требований.regex для usernames

  • Должен состоять, по крайней мере два символа, которые являются альфа-символы A-Za-Z
  • должен состоять только один символ подчеркивания или тире разрешено в любом месте после первой проверки, тире/подчеркивание не может быть в конце, как то же самое правило для применения в качестве первого шага
  • Должно быть буквенно-цифровым символом.

В основном хороший пример

Приемлемые Usernames

  • myusername_09
  • имя_пользователя-09
  • м.т.-09

неприемлемые USERNAMES

  • мт 09
  • мт - 09
  • bw_-09
  • username__09

Если любая помощь будет признателен, это то, что я имел, но он не работает для меня, как то, что я хочу это будет.

^(?=[A-Za-z0-9])(?!.*[_-]{2})[A-Za-z0-9_-]+$ 
+1

FYI: «regex» является сокращением «регулярного выражения», поэтому выражение «выражение регулярного выражения», для меня, звучит смешно. –

+0

Спасибо, Кэмпбелл, за исправление моего тега. Я все еще новичок в этом переполнении стека в качестве члена. В основном пришли ответы, о которых нас уже спрашивали. Но я не мог получить то, что хотел от ответов. – Benjamin

+0

@Sean: Я программирую на C#, и я просто привык к «Regex» хе-хе, но да, я знал это. Спасибо, хотя я просто отказался от этого/ – Benjamin

ответ

7

Если я правильно понимаю ваши требования, вам просто нужно подтвердить, что имя пользователя верное? Если да, то я хотел бы использовать это регулярное выражение:

^[A-Za-z]{2,}[_-]?[A-Za-z0-9]{2,}$ 

Вы не сказали, сколько символов будет необходимо после тире или подчеркивания; Мой пример требует по крайней мере еще 2 после. Он может быть изменен по мере необходимости.

EDIT: Я добавил ? после [_-], чтобы указать, что это необязательно, за ваш комментарий ниже.


Некоторая дополнительная информация о кванторов:

  • {N,} означает, что должно быть, по крайней мере N символов из предыдущего пункта, чтобы соответствовать.
  • {N} означает, что должно быть ровно N предыдущего.
  • {N,M} означает, что должно быть не менее N, но не более M.
  • ? означает, что должно быть 0 или 1 из предшествующего.
  • + означает, что должно быть 1 или больше.
  • * означает, что должно быть 0 или больше.
+0

Спасибо, это действительно приводит к некоторому ответу. Прошу прощения, я не указал, сколько персонажей. Я фактически использую ASP.NET MVC, поэтому у меня есть атрибут, который определяет минимальное и максимальное количество символов в качестве проверки. Одна вещь, которую я забыл упомянуть, заключалась в том, что подчеркивание/тире не требуется, чтобы он мог принимать типичные имена пользователей, такие как bw09 или username09, или даже планировать имена пользователей, такие как «myusername». – Benjamin

+0

Gotcha; Я отредактировал ответ, чтобы иметь опцию _ или -. Также обратите внимание, что в этом регулярном выражении требуется, по крайней мере, 4-значное имя пользователя, не считая знак тире/подчеркивания, а первые два не могут быть числами. Он также не проверяет максимальную общую длину. Добавление вопросительного знака должно в противном случае обрабатывать то, что вам нужно. –

+0

^[A-Za-z] {4,} [-_]? [A-Za-z0-9] + $ - это то, что я получил для тех, кто хотел знать. Большое спасибо Андрею за вашу помощь. – Benjamin

Смежные вопросы