Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для CyberEeOne
0 / 0 / 0
Регистрация: 15.12.2016
Сообщений: 35

Сравнении введённых данных с регулярным выражением

19.01.2018, 21:53. Показов 2524. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет

Сделал проверку данных формы
Сначала всё было нормально. Потом на вот этой строчке код останавливался и форма просто отправлялась пустой

Что не так с этой строчкой?
if(email.test(document.getElementById("e mail").value) == false) {


В консоли браузера никаких ошибок нет.
В Google Chrome смотрел, как работает мой JS код по шагам и понял, что вылетает он на этой строке.
Именно "вылетает".
На странице с формой просто в наглую происходит переход на action_form.php, а в инструментах разработчика во вкладке Sources браузера Chrome на какие то непонятные JS файлы с кучей смешанного кода.
Вообще не могу понять по какой причине так получилось.

Но сама строка изначально не отмечена, как ошибочная

Вот пример общего кода (На всякий случай)

HTML5
1
2
3
4
5
6
7
8
9
<form id="action_form" method="POST" action="action_form.php" onsubmit="return actionForm(this)">
  <div id="validName" class="test-message"></div><input type="text" name="name" id="name" placeholder="Имя" >
  <div id="validSurname" class="test-message"></div><input type="text" name="surname" id="surname" placeholder="Фамилия">
  <div id="validPatronymic" class="test-message"></div><input type="text" name="patronymic" id="patronymic" placeholder="Отчество">
  <div id="validPhone" class="test-message"></div><input type="tel" name="phone" id="phone" placeholder="Телефон" >
  <div id="validEmail" class="test-message"></div><input type="email" name="email" id="email" placeholder="Email" >
  <textarea name="message" placeholder="Ваше сообщение"></textarea>
  <input type="submit" id="submit" value="Отправить">
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function actionForm(form){
  var email = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var phone = /^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/;
  var name = /^[а-яА-ЯёЁa-zA-Z]{2,10}$/;
  var surname = /^[а-яА-ЯёЁa-zA-Z-]{2,30}$/;
  var patronymic = /^[а-яА-ЯёЁa-zA-Z]{2,20}$/;
  
  var invalid = "";
 
  function validation(inputID, testReport, noText, incorrectText){
      if (document.getElementById(inputID).value == "") {
        document.getElementById(testReport).innerHTML=noText;
        invalid ++;
      }else if(inputID.test(document.getElementById(inputID).value) == false) { <-----------------строчка на которой код прекращает работать 
        document.getElementById(testReport).innerHTML=incorrectText;
        invalid ++;
      }else{
        document.getElementById(testReport).innerHTML='';
      }
  }
 
  function displayMessage(testReport){
    document.getElementById(testReport).style.cssText = "display: block; color: red;";
  }
 
  validation("email","validEmail","Поле email не должно быть пустым","Некорректный Email адрес");
 
  validation("phone","validPhone","Поле телефон не должно быть пустым","Некорректный номер телефона");
 
  validation("name","validName","Поле имени не должно быть пустым","Имя введено некорректно");
 
  validation("surname","validSurname","Поле фамилии не должно быть пустым","Фамилия введена некорректно");
 
  validation("patronymic","validPatronymic","Поле отчества не должно быть пустым","Отчество введено некорректно");
 
  if (invalid == ""){
    return true;
  }else{
    displayMessage("validEmail");
    displayMessage("validPhone");
    displayMessage("validName");
    displayMessage("validSurname");
    displayMessage("validPatronymic");
    return false;
  }
};
Подскажите, с чем может быть связана такая "магия"
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2018, 21:53
Ответы с готовыми решениями:

с регулярным выражением.
Имеем текст youtube.com/watch?v=LOZuxwVk7TU&amp;ob=av2em нужно получить то что находится между /watch?v= и &amp; в нашем случае...

Исправить код с регулярным выражением
Этот код нужно изменть. Задача: -Логин: Одна заглавная английская буква, остальные строчные. -Пароль: должны быть Прописные,...

Отличить две ссылки регулярным выражением
JQuery.expr.regex = function(elem, index, match) { var matchParams = match.split(','), validLabels = /^(data|css):/, ...

4
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.01.2018, 01:00
А какую ошибку выдаёт?
Странный этот объект у Вас inputID, у которого есть что-то .test, которое берётся по inputID - где берётся-то? Слепой что ли, но переменную сию не вижу.

Сори, увидел inputID, но вопрос остался, что делает .test в Вашем скрипте?
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
20.01.2018, 02:23
Лучший ответ Сообщение было отмечено CyberEeOne как решение

Решение

CyberEeOne, функции validation inputID передается как строка, а на указанной вами строчке вы хотите использовать эту строку как регулярное выражение. Можно так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var email = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var phone = /^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/;
var name = /^[а-яА-ЯёЁa-zA-Z]{2,10}$/;
var surname = /^[а-яА-ЯёЁa-zA-Z-]{2,30}$/;
var patronymic = /^[а-яА-ЯёЁa-zA-Z]{2,20}$/;
 
var regExps = {
  email: email,
  phone: phone,
  name: name,
  surname: surname,
  patronymic: patronymic
};
 
//.... дальше в коде ......
 
else if(regExps[inputID].test(document.getElementById(inputID).value) == false)
Т.е. каждому inputID соответствует свой regexp в объекте regExps.
3
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.01.2018, 05:50
Ну вот, теперь нормальный объект
0
 Аватар для CyberEeOne
0 / 0 / 0
Регистрация: 15.12.2016
Сообщений: 35
20.01.2018, 08:02  [ТС]
MrOnlineCoder, Спасибо большое
Всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2018, 08:02
Помогаю со студенческими работами здесь

Поиск соответствия содержания текстового поля с регулярным выражением не абсолютно
Добрый день! Помогите разобраться с регулярными выражениями, никогда до конца их не понимал. Необходимо в поле ввести ФИО через...

Извлечь цифры из текста после определённых символов регулярным выражением
Здравствуйте, пожалуйста помогите сделать следующее: имеется строка (например): ...

Не вырезается слово регулярным выражением
Здравствуйте. Есть строка такого типа: ...Цвет: Белый,... ...Цвет: Рифт белый,... вобщем вариаций много... единственные...

Как определить длину строки, вырезанной регулярным выражением?
Здравствуйте. Собственно вот вопрос, length не подходит...) var url = location.search; var regexr=/id=.*/ ; var cut =...

Делать или нет метод get в зависимости от введённых данных
Пользователь вводит в строку число, после нажатия на кнопку делается get метод. Как сделать так чтобы если число в не заданного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru