2014-01-17 5 views
1

Я пытаюсь проверить имя пользователя в моей форме с помощью клики на стороне клиента, и у меня возникли проблемы.regex, который проверяет, что строка находится между двумя длинами и имеет только буквы и цифры.

Я пытаюсь использовать совпадение их с регулярными выражениями, которые, похоже, работают для моей силы пароля/соответствия. Однако, когда я пытаюсь изменить регулярное выражение на тот, который подходит для имен пользователей, он не работает.

Это регулярное выражение, которое работает, оно проверяет, имеет ли длина длиной не менее 6 символов.

var okRegex = new RegExp("(?=.{6,}).*", "g"); 

Это другое регулярное выражение, которое не работает:

var okRegex = new RegExp("/^[a-z0-9_-]{3,16}$/"); 

Как написать регулярное выражение, которое выполняет проверку имени пользователя? (То, что он имеет определенную длину, имеет только буквы и цифры)

+0

Каковы правила для имен пользователей, которые вы пытаетесь применить? – rusmus

+0

Полезный инструмент для регулярных выражений: http://regex101.com/r/bB5aL3 – caramba

+0

'if (/^[a-z0-9 _-] {3,16} $ /. Test (userNameVar)) {// имя пользователя: good!} ' – Obversity

ответ

4

Вы смешиваете литералы регулярного выражения с помощью конструктора RegExp. Используйте один или другой, но не оба:

okRegex = new RegExp('^[a-z0-9_-]{3,16}$'); 

или

okRegex = /^[a-z0-9_-]{3,16}$/; 
+0

Отсортировано, спасибо! – user3112518

+0

Стоит упомянуть, что если вы создаете динамический RegExps, используйте «новый RegExp()» и передайте аргументы, для жесткого кодирования используйте '/ regexp /', поскольку это быстрее. –

+0

Отметил, спасибо. – user3112518

1

Как @zzzzBow ответил вы путаете два способа использования регулярных выражений. Выберите тот или другой. Теперь прорыв:

^ Соответствует началу строки (это означает, что строка должна начинаться с следующего).

[a-z0-9_-] Соответствует charecters a-z, A-Z, цифры 0-9 _ (подчеркивание) и - (тире/дефис).

{3,16} Указывает, что из вышеуказанного класса символов должно быть 3-16.

$ Соответствует концу строки, поэтому не может быть ничего после 16 символов выше.

Надеюсь, что это поможет.

+0

Ах, это здорово, спасибо, что сломал его. – user3112518

+0

У меня возникли проблемы с электронной почтой сейчас .. Я использую только один литерал .. Я думаю, что var varRegex = new RegExp ('^ [A-Z0-9 ._% + -] + @ [A-Z0 -9 .-] + \ [AZ] {2,4} $ ');. ' – user3112518

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