Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проверка строки ввода логина в форме (https://javascript.ru/forum/events/33044-proverka-stroki-vvoda-logina-v-forme.html)

assessor 08.11.2012 15:27

Проверка строки ввода логина в форме
 
Здравствуйте, уважаемые специалисты.
Помогите, чайнику.
Есть в скрипте проверки данных в форме ввода логина такая штука.
uname = document.profile_form.u__name.value;
if (uname=="System" || uname=="system"){
alert('Имя зарезервировано');
document.profile_form.u__name.focus();
return false;

Подскажите мне, пожалуйста, код, который проверяет, что первый символ должен быть только буквой: латинской, либо кириллицей.

Заранее благодарю.

cyber 08.11.2012 16:15

assessor,можно так
function find(str){
   
  return  str.search(/^([a-z|а-я])/gi) != -1;
        
   };

a_l 08.11.2012 16:46

cyber, лучше так:
return (/^([a-z|а-я])/gi).test(str);

cyber 08.11.2012 17:27

a_l, тут суть в регулярке а остальное по желанию

assessor 08.11.2012 19:41

Благодарю. Но мне нужно проверять только первый символ, чтобы была только буква. А то регистрируются с никами, которые начинаются с цифр и других символов.
Вот у меня есть значение document.profile_form.u__name.value поля u__name.
Как мне проверить валидность первого символа и выдать сообщение в случае ошибки.

if ( какое тут должно быть условие ? ){
alert('Первый символ имени должна быть буква');
document.profile_form.u__name.focus();
return false;

cyber 08.11.2012 19:57

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

Маэстро 09.11.2012 17:51

Цитата:

Сообщение от assessor
Но мне нужно проверять только первый символ

Возьмите сначала первый символ:
var str='@masha';      
var c = str.substring(0,1)
//alert(c);
// теперь можно проверить 1 символ c

cyber 09.11.2012 18:05

Маэстро,и чем проверять? той же регуляркой? (лично я другого способа не знаю.)

Маэстро 09.11.2012 18:36

Цитата:

Сообщение от cyber (Сообщение 215056)
Маэстро,и чем проверять? той же регуляркой? (лично я другого способа не знаю.)

Я лишь подчеркнул мысль о первом символе.
Чем проверять - зачастую зависит от вкуса программиста. Лично я недолюбливаю регулярки. Когда их делают трехэтажными - текст становится нечитабельным (как для меня).
Вот еще вариант:
var str='пasha';      
var c = str.substring(0,1).toUpperCase();
alert(c);
var f=(((c >= 'A') && (c <= 'Z')) || ((c >= 'А') && (c <= 'Я')));
alert(f);

cyber 09.11.2012 18:39

Цитата:

Сообщение от Маэстро (Сообщение 215075)
Я лишь подчеркнул мысль о первом символе.
Чем проверять - зачастую зависит от вкуса программиста. Лично я недолюбливаю регулярки. Когда их делают трехэтажными - текст становится нечитабельным (как для меня).
Вот еще вариант:
var str='пasha';      
var c = str.substring(0,1).toUpperCase();
alert(c);
var f=(((c >= 'A') && (c <= 'Z')) || ((c >= 'А') && (c <= 'Я')));
alert(f);

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

cyber 09.11.2012 18:41

var c = str.substring(0,1).toUpperCase();

а не проще так
var c = str[0].toUpperCase();

assessor 09.11.2012 19:10

Благодарю за идею. Сделал так. Вроде работает.

uname = document.profile_form.u__name.value;

if (uname.search(/^([a-z|а-я])/gi) != -1) return true; 
else {
alert('Имя должно начинаться с буквы !');
document.profile_form.u__name.focus();
return false; 
};

lord2kim 09.11.2012 19:53

Цитата:

Сообщение от cyber (Сообщение 215077)
var c = str.substring(0,1).toUpperCase();

а не проще так
var c = str[0].toUpperCase();

в IE8- работать не будет
var c = str.charAt(0).toUpperCase();

cyber 10.11.2012 16:16

lord2kim, в ИЕ-8 работает

dmitriymar 10.11.2012 20:01

alert((/^([a-z|а-я])/gi).test('ёлка'))

:)

cyber 10.11.2012 20:25

dmitriymar, возвращает false ..

dmitriymar 10.11.2012 20:28

var str = "ё# dfdfs";   
 alert(str.search(/^([a-z|а-яё])/gi) != -1);

:)

Маэстро 13.11.2012 12:52

assessor,
а интересно, что за система? Проверка ников в чате? А как насчет того, чтобы имена не начинались с мягкого/твердого знака? и т.п.
"ЪК", "ЬСщц" "Ысчё" ;)


Часовой пояс GMT +3, время: 14:13.