регулярное выражение
Добрый день, столкнулся с проблемой: нужно написать регулярное выражение для проверки поля "логин" которое может содержать только символы: a-zA-Z0-9_ и длина его от 4 до 15 символов. Проверка должна реагировать на посимвольный ввод с клавиатуры.
По документации http://javascript.ru/basic/regular-expression что-то написал, но почему-то тупо косячит: например если вводить: aaaaaaa - то true если вводить @@aaaaaaa то тоже true но если ввести @@@@@@ то уже false теряюсь в догадках... может кто знает как исправить это? Заранее спасибо.. $(document).ready(function(){ $("#name").keyup(function(){ check_uname(); }); $("#name").focus(function(){ check_uname(); }); $("#name").blur(function(){ check_uname(); }); }); function check_uname(){ var r = true; var uname = $("#name").val(); if(validater_username(uname)){ if((uname.length >= 4)&&(uname.length <= 15)){ $("#uname_help").css({ "background-image": "url('/images/validyesno.png')", "background-position": "0 bottom" }); $("#uname_help").attr({title: "OK"}); } else{ $("#uname_help").css({ "background-image": "url('/images/validyesno.png')", "background-position": "0 top" }); $("#uname_help").attr({title: "Ошибка: длина логина от 4 до 15 символов!"}); r = false; } } else{ $("#uname_help").css({ "background-image": "url('/images/validyesno.png')", "background-position": "0 top" }); $("#uname_help").attr({title: "Ошибка: разрешено использовать только английские буквы, цифры и знак подчеркивания!"}); r = false; } return r; } function validater_username(username) { var pattern = new RegExp(/[0-9a-z_]+/i); return pattern.test(username); } <input type="text" name="uname" id="name"/> |
Вы не исключили символы, которые вводить нельзя:
<input id="input" value="" /> <script> document.getElementById('input').oninput = function() { this.value = this.value.replace(/[^\d\w_]/g, ''); }; </script> |
RegExp(/^[a-zA-Z0-9_]+$/);
вот решение |
Цитата:
|
так буквы и подчеркивание нужны! а у тебя одни только цифры.
и потом - не совсем в хорошем тоне запрещать пользователю ввод символов без сообщения об ошибке. Человек пытается ввести, а у него не получается. А если добавлять к твоему коду уведомление, то будет тоже много))) Решение безусловно хорошее, но для полей, более важных чем username. Все равно спасибо! |
Цитата:
|
Часовой пояс GMT +3, время: 13:13. |