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

Тема в разделе "Регулярные выражения", создана пользователем jabbaxatt, 12 янв 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    882
    Симпатии:
    414
    Т.к. в ява скриптах и регулярках практически не соображаю - возникла проблема в вроде простой задаче.

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

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

    Код:
    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;
     
    Как тут дописать проверку, что в фамилии используются только русские буквы и дефис?
        }
    }
    }
    У меня тупо проблема в том, что не знаю правильного синтаксиса.
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    вроде так попробуй, но с регулярками скорее всего я напортачил :) телефон например лучше такой проверять
    или пойти от исключения
    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;
    }
    }
    }
    }
     
    jabbaxatt нравится это.
  3. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    882
    Симпатии:
    414
    Тут недостаток

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

    и в фамилии очень похоже - .
    Пропускает "ИванREFEcdd" но ловит "REFEcddИван"
     
  4. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    Заменить
    Код:
    var regV = /[0-9\(\)\-]/gi;
    на
    Код:
    var regV = /[0-9\(\)\-]+/gi;
    И заменить
    Код:
    var regV = /[а-Я\-]/gi;
    на
    Код:
    var regV = /[а-Я\-]+/gi;
    Если вкратце, то регулярки zzallexx проверяли только первый символ
     
    jabbaxatt нравится это.
  5. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    882
    Симпатии:
    414
    Вроде написал. Приведенный ниже скрипт признает
    телефон +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 нифига не соображаю (скрипт написал методом научного тыка), если еще есть замечания - пишите.
     
Статус темы:
Закрыта.