регулярное выражение
Добрый день, столкнулся с проблемой: нужно написать регулярное выражение для проверки поля "логин" которое может содержать только символы: 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, время: 07:14. |