Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2011, 20:58
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

регулярное выражение
Добрый день, столкнулся с проблемой: нужно написать регулярное выражение для проверки поля "логин" которое может содержать только символы: 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"/>
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2011, 21:24
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Вы не исключили символы, которые вводить нельзя:
<input id="input" value="" />

<script>
document.getElementById('input').oninput = function() {
     this.value = this.value.replace(/[^\d\w_]/g, '');
};
</script>

Последний раз редактировалось monolithed, 28.07.2011 в 21:35.
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2011, 21:29
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

RegExp(/^[a-zA-Z0-9_]+$/);

вот решение
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2011, 21:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от martinss
вот решение
много лишнего, еще раз посмотрит код выше
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2011, 21:57
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

так буквы и подчеркивание нужны! а у тебя одни только цифры.
и потом - не совсем в хорошем тоне запрещать пользователю ввод символов без сообщения об ошибке.
Человек пытается ввести, а у него не получается.
А если добавлять к твоему коду уведомление, то будет тоже много)))

Решение безусловно хорошее, но для полей, более важных чем username.

Все равно спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2011, 12:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от martinss
может содержать только символы: a-zA-Z0-9_ и длина его от 4 до 15 символов
А откуда берутся такие ограничения?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка e-mail регулярное выражение mycoding Общие вопросы Javascript 4 09.02.2017 10:12
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12
регулярное выражение demi Общие вопросы Javascript 3 10.03.2009 13:10