2010-11-13 18 views
5

Próbuję dowiedzieć się, jak ustawić wyrażenie regularne na spełnienie następujących wymagań.regex dla nazw użytkowników

  • musi składać się co najmniej dwa znaki, które są znaki alfa a-zA-Z
  • musi zawierać tylko jeden znak podkreślenia lub myślnika dozwolony wszędzie po pierwszej kontroli, myślnik/podkreślenia, nie może być na końcu jak sama zasada stosowana jako pierwszy krok musi być alfanumerycznym znakiem.

Zasadniczo dobrym przykładem jest

Dopuszczalne nazwy użytkowników

  • myusername_09
  • nazwy użytkownika 09
  • BW-09

niedopuszczalne USERNAMES

0.123.
  • bw 09
  • mc - 09
  • bw_-09
  • username__09

Jeśli każda pomoc będzie wiedział, to co miałem, ale jej nie działa na mnie jak co chcę że jest to.

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

FYI: "regex" to skurcz "wyrażenia regularnego", więc "wyrażenie regex" dla mnie brzmi śmiesznie. –

+0

Dzięki Campbell, za naprawienie mojego tagu. Wciąż jestem nowy w tym całym przepełnieniu stosu jako członek. Głównie przyszedł po odpowiedzi, o które już nas poprosiliśmy. Ale nie mogłem dostać tego, co chciałem, przez odpowiedzi tam. – Benjamin

+0

@Sean: Programuję w języku C# i jestem przyzwyczajony do "Regex" hehe, ale tak, wiedziałem o tym. Dzięki, po prostu przysięgam, że nie./ – Benjamin

Odpowiedz

7

Jeśli dobrze rozumiem Twoje wymagania, wystarczy sprawdzić, czy nazwa użytkownika jest poprawna? Jeśli tak, chciałbym użyć tego wyrażenia regularnego:

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

nie powiedziałeś ile znaków będzie wymagane po myślnikiem lub podkreślenia; mój przykład wymaga co najmniej 2 kolejnych po. W razie potrzeby można go zmienić.

EDYCJA: Dodałem ? po [_-] do konta jako opcjonalne, za komentarz poniżej.


Niektóre dodatkowe informacje dotyczące kwantyfikatorów:

  • {N,} oznacza, że ​​musi być co najmniej n znaków z poprzednim punkcie, aby dopasować.
  • {N} oznacza, że ​​musi być dokładnie N z poprzedniego.
  • {N,M} oznacza, że ​​musi być co najmniej N, ale nie więcej niż M.
  • ? oznacza, że ​​musi być 0 lub 1 z poprzednich.
  • + oznacza, że ​​musi być 1 lub więcej.
  • * oznacza, że ​​musi być 0 lub więcej.
+0

Dzięki, to prowadzi do jakiejś odpowiedzi. Przepraszam, że nie wskazałem, ile znaków. W rzeczywistości używam ASP.NET MVC, więc mam atrybut, który definiuje minimalną i maksymalną liczbę znaków jako walidację. Jedną rzeczą, o której zapomniałem wspomnieć było to, że podkreślenie/kreska nie jest wymagane, może akceptować typowe nazwy użytkowników, takie jak bw09 lub nazwa_użytkownika09, a nawet planować nazwy użytkowników, takie jak "nazwa_użytkownika". – Benjamin

+0

Gotcha; Zmieniłem odpowiedź, aby opcja _ lub - była opcjonalna. Zauważ także, że tak jest, to wyrażenie wymaga co najmniej 4-znakowej nazwy użytkownika, nie licząc kreski/podkreślenia, a pierwsze dwa nie mogą być liczbami. Nie sprawdza także maksymalnej długości całkowitej. Dodanie znaku zapytania powinno w inny sposób poradzić sobie z tym, czego potrzebujesz. –

+0

^[A-Za-z] {4,} [-_]? [A-Za-z0-9] + $ jest tym, co otrzymałem dla tych, którzy chcieli wiedzieć. Wielkie dzięki Andrew za pomoc. – Benjamin