Js. прошу помощи - как проверить вводимые в поле данные

Статус
В этой теме нельзя размещать новые ответы.

jabbaxatt

Добрый модератор
Регистрация
21 Янв 2009
Сообщения
902
Реакции
432
Т.к. в ява скриптах и регулярках практически не соображаю - возникла проблема в вроде простой задаче.

Проверяется корректность вводимых данных в форме. Скрипт ниже - рабочий - проверяет правильность мыла(это взял готовое) и проверяет не пустые ли поля.

Но! как дописать проверку правильности номера телефона и проверка того, что фамилия введена только русскими буквами+дефис?

Код:
function thisform(form){
    if(form.email.value == ""){
        alert('Вы не ввели email');
        return false;
    }
    else {
        var email = form.email.value;
        var regV = /[a-z0-9-_]{2,1000}\@[a-z0-9\-\_]{2,100}\.[a-z0-9]{2,4}/gi;
        var result = email.match(regV);
        if(!result){
            alert ('Введите корректный email');
            return false;
        }
   
        if(form.telefon.value == ""){
        alert ('Вы не ввели контактный телефон.');
        return false;
        }     
Как тут дописать проверку, что в телефоне используются только 0-9 ()-
 
      if(form.familia.value == ""){
        alert ('Вы не ввели свою фамилию.');
        return false;
 
Как тут дописать проверку, что в фамилии используются только русские буквы и дефис?
    }
}
}

У меня тупо проблема в том, что не знаю правильного синтаксиса.
 
вроде так попробуй, но с регулярками скорее всего я напортачил :) телефон например лучше такой проверять
/\d{1}\(\d{3}\)\d{3}\-\d{3}/
или пойти от исключения
HTML:
function thisform(form){
if(form.email.value == ""){
alert('Вы не ввели email');
return false;
}
else {
var email = form.email.value;
var regV = /[a-z0-9-_]{2,1000}\@[a-z0-9\-\_]{2,100}\.[a-z0-9]{2,4}/gi;
var result = email.match(regV);
if(!result){
alert ('Введите корректный email');
return false;
}
 
if(form.telefon.value == ""){
alert ('Вы не ввели контактный телефон.');
return false;
}
else {
var telefon = form.telefon.value;
//Как тут дописать проверку, что в телефоне используются только 0-9 ()-
var regV = /[0-9\(\)\-]/gi;
var result = telefon.match(regV);
if(!result){
alert ('Введите корректный номер телефона');
return false;
}
}
if(form.familia.value == ""){
alert ('Вы не ввели свою фамилию.');
return false;
}
else {
var email = form.familia.value;
//Как тут дописать проверку, что в фамилии используются только русские буквы и дефис?
var regV = /[а-Я\-]/gi;
var result = familia.match(regV);
if(!result){
alert ('Введите корректно фамилию');
return false;
}
}
}
}
 
Тут недостаток

в телефоне пропускает "3445ERFC" но ловит "ERFC3445"

и в фамилии очень похоже - .
Пропускает "ИванREFEcdd" но ловит "REFEcddИван"
 
Заменить
Код:
var regV = /[0-9\(\)\-]/gi;
на
Код:
var regV = /[0-9\(\)\-]+/gi;

И заменить
Код:
var regV = /[а-Я\-]/gi;
на
Код:
var regV = /[а-Я\-]+/gi;

Если вкратце, то регулярки zzallexx проверяли только первый символ
 
Вроде написал. Приведенный ниже скрипт признает
телефон +7 (928) 222-33-44 Но при появлении букв говорит что ошибка.
Фамилию Рёвко - Буркин признает, но при появлении цифр, английского и др символов - выдает ошибку.

Так и не понял, почему у меня не заработал вариант без ^ и с if(!result), + почему-то тоже не понадобился.
Заработал такой код:
Код:
function thisform(form){
    if(form.email.value == ""){
        alert('Вы не ввели email');
        return false;
    }
    else {
        var email = form.email.value;
        var regV = /[a-z0-9-_]{2,1000}\@[a-z0-9\-\_]{2,100}\.[a-z0-9]{2,4}/gi;
        var result = email.match(regV);
        if(!result){
            alert ('Введите корректный email');
            return false;
        }
   
        if(form.telefon.value == ""){
        alert ('Вы не ввели контактный телефон.');
        return false;
        }
else {
var telefon = form.telefon.value;
var regV1 = /[^0-9 \(\)\-\+]/gi;
var result1 = telefon.match(regV1);
if(result1){
alert ('Введите корректный номер телефона');
return false;
}
}
      if(form.familia.value == ""){
        alert ('Вы не ввели свою фамилию.');
        return false;
        }
else {
var familia = form.familia.value;
var regV1 = /[^а-яёЁ \-]/gi;
var result1 = familia.match(regV1);
if(result1){
alert ('Введите корректно фамилию');
return false;
}   
}

Всем спасибо за помощь. В регулярках и JS нифига не соображаю (скрипт написал методом научного тыка), если еще есть замечания - пишите.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху