Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование регулярных выражений в JavaScript

Лабораторная работа №5

JavaScript. Валидация данных, регулярные выражения, отправка почты.

 

1. Цель работы... 2

2. Методические указания по организации самостоятельной работы... 2

2.1 Классы проверки данных (валидаторы). 2

2.2 Регулярные выражения.. 2

2.3 Использование регулярных выражений в JavaScript. 5

2.4 Проверка формы отправки почты... 6

3. Порядок выполнения работы и индивидуальные задания.. 9

3.1 Содержание отчета.. 9

3.2 Индивидуальные задания.. 9


Лабораторная работа №5

JavaScript. Валидация данных, регулярные выражения, отправка почты.

Цель работы

Целью данной работы: научиться писать валидаторы, регулярные выражения c помощью JavaScript, а также код отправки почты.

Методические указания по организации самостоятельной работы

 

В лабораторной работе будут рассмотрены следующие вопросы:

Валидация данных

Регулярные выражения

Отправка почтовых сообщений

Классы проверки данных (валидаторы)

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

Прежде чем работать с данными, нужно убедиться, что:

· в определенное поле введена информация;

· текст в поле "Адрес" имеет форму электронного адреса (с @ и с точкой);

· дата рождения разумна, например, пользователь не сообщил о себе, что ему 300 лет или 1 годик;

· пароль достаточно сложен и не совпадает с логином.

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

Регулярные выражения

Регулярные выражения — система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.

Образец, задающий правило поиска, называется "шаблоном". Применение регулярных выражений принципиально преобразило технологии электронной обработки текстов.

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

При описании структуры шаблона используются:

  • гибкая система квантификаторов (операторов повторения);
  • операторы описания наборов символов и их типа (числовые, нечисловые, специальные).

Для того, чтобы задать положение искомого фрагмента внутри строки, можно использовать один из следующих операторов:

Представление Позиция
^ Начало строки
$ Конец строки
\b Граница слова
\B Не граница слова
(?=шаблон) Искомая строка следует после указанной строкой (с просмотром вперед)
(?!=шаблон) Искомая строка не следует после указанной строки (с просмотром вперед)
(?<=шаблон) Искомая строка следует после указанной строкой (с просмотром назад)
(?<!шаблон) Искомая строка не следует после указанной строки (с просмотром назад)

Кроме того, язык регулярных выражений предоставляет набор квантификаторов, позволяющих указать число повторений шаблона:

Представление Число повторений
{n} Ровно n
{m, n} От m до n включительно
{m,} Не менее m
{,n} Не более n

Имеются и более простые квантификаторы:

Представление Число повторений Эквивалент
* Ноль или более {0,}
+ Одно или более {1,}
? Ноль или одно {0,1}

Для задания внутри шаблона группы символом можно использовать следующие операторы:

Оператор Описание
[xyz] Любой символ из указанного множества
[^xyz] Любой символ не входящий в указанное множество
[x-z] Любой символ из указанного диапазона
[^x-z] Любой символ не входящий в указанный диапазон
. (точка) Любой символ кроме символов разрыва или переноса строки
\w Любой буквенно-цифровой символ, включая символ подчеркивания
\W Любой не буквенный символ
\d Любая цифра
\D Любой нецифровой символ
\s Люой не отображаемый символ
\S Любой символ (кроме неотображаемых символов)

Для группировки отдельных частей шаблона можно использовать следующие операторы:

Оператор Описание
() Поиск группы символов внутри скобок и сохранение найденного соответствия
(?:) Поиск группы символов внутри скобок без сохранения найденного соответствия
| Комбинирование частей в одно выражения с последующим поиском любой из частей в отдельности. Аналогично оператору "ИЛИ".

Если шаблон поиска включает специальные (как правило неотображаемые) символы, для их описания можно использовать следующие обозначения:

Обозначение Описание
\0 Символ с нулевым кодом
\n Символ новой строки
\r Символ начала строки
\t Символ табуляции
\v Символ вертикальной табуляции
\xxx Символ, имеющий заданный восьмеричный ASCII код xxx
\xdd Символ, имеющий заданный шестнадцатиричный ASCII код dd
\uxxxx Символ, имеющий ASCII код выраженный ЮНИКОДОМ xxxx

Квантификаторам в регулярных выражениях соответствует максимально длинная строка из возможных (т.е. квантификаторы являются "жадными"). Это может приводить к некоторым проблемам. Например, шаблон (<.*>) описывающий на первый взгляд теги HTML на самом деле будет выделять более крупные фрагменты в документе.

Например, строка вида

<p> <font color='blue'> <i>Регулярные выражения<i> </font> - удобный инструмент для поиска в строках </p>

формально соответствует указанному выше шаблону

Для решения данной проблемы можно использовать два подхода.

  1. В регулярном выражении учитываются символы, не соответствующие желаемому образцу (например, <[^>]*> для вышеописанного случая).
  2. Определение квантификатора как нежадного (ленивого) - большинство реализаций позволяют это сделать, добавив после него знак вопроса.

Например, по шаблону (<.*?>) будут найдены все теги из рассмотренной строки.

Таким образом, получаются следующие "нежадные" модификации квантфикаторов:

Модификатор Описание
*? "не жадный" эквивалент *
+? "не жадный" эквивалент +
{n,}? "не жадный" эквивалент {n,}

Следует, однако, иметь в виду, что использование "ленивых" квантификаторов может привести к ситуации, когда выражению соответствует слишком короткая, в частности, пустая строка.

Использование регулярных выражений в JavaScript

При поиске по тексту можно использовать шаблон, описывающий подстроку. В JavaScript такой шаблон может быть описан с помощью объекта RegExp. В простейшем случае такой шаблон описывает отдельный символ, однако имеет смысл его использовать для регулярных выражений.

Следующий ниже код описывает RegExp объект с именем pttn, содержащий регулярное выражение, описывающее целое десятичное число:

var pattn = new RegExp("/[0-9]+/");

Объект RegExp имеет 3 встроенных метода: test(), exec() и compile().

  • Метод test() выполняет поиск по шаблону:
· var pattn = new RegExp("[0-9]+");· document.write(pattn.test("38 попугаев"));

Результат:

true
  • Метод exec() выполняет поиск подстроки по шаблону и возвращает найденные соответствия; если соответствий нет, возвращается значение null:
· var pattn=new RegExp("[0-9]+");· document.write(pattn.exec("38 попугаев"));

Результат:

38

Если необходимо найти все соответствия, то при вызове конструктора RegExp следует указать дополнительный параметр "g", указывающий на необходимость глобального поиска:

var pattn = new RegExp("[0-9]+", "g");do{result = pattn.exec("1 попугай, 2 попугая,…, 38 попугаев");document.write(" " + result);}while (result!= null)

Пример 2.1.

Результат:

1 2 38 null
  • Метод compile() применяется для изменения ранее созданного шаблона:
· var pattn = new RegExp("[0-5]+");· document.write(pattn.exec("38 попугаев"));· pattn.compile("[6-9]+");· document.write(";" + pattn.exec("38 попугаев"));

Пример 2.2.

Результат:

3;8
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...