Логотип Валидатор Валидатор Качество создания сайта

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

Что такое, и зачем нужны регулярные выражения

Регулярные выражения - Regular Expressions, а сокращённо - RegExp разработаны для извлечения информации из строковых объектов веб-страниц, т.е. из текста.

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

Их постоянно применяют, когда нужно найти одно или несколько совпадений в больших объёмах текста. Для этого составляют определённые шаблоны. А вот как раз эти самые шаблоны и называются регулярными выражениями.

И в них задаются правила поиска нужной информации, т.е. его алгоритмы Они самые!

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

Хоть составленные выражения вставляются внутрь кода JavaScript, но, фактически, это целый мини-язык программирования и, надо сказать, довольно-таки путаный.Да уж!

Однако, регулярные выражения очень эффективны!  А кроме того, они подходят, практически, для любого языка программирования, а не только для JavaScript.

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

Особенно необходимы подобные поисковые системы для сайтов с БОЛЬШИМ количеством текстовых материалов: интернет-магазины, порталы госуслуг, справочные сайты, форумы, и так далее.

Короче, на таких ресурсах регулярные выражения применяются постоянно, и там без них просто-напросто не обойтись!

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

* * *

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


Примеры регулярных выражений

Поиск целого выражения, а НЕ индекс его начала.

Решил оформить этот подраздел как "выполнение домашних заданий" по нескольким из уроков обучающего диска.
Разумеется, буду приводить в качестве примеров короткие тексты. Важен принцип, а не объём текста, из которого что-либо нужно выбрать. Объём может быть любой!

Оформление► Текстовые данные для выборки выделил белым фоновым цветом.
Результат работы JavaScript-кода с регулярными выражениями внутри во всех примерах выделял серым фоновым цветом.


Пример №1. Выбор одного телефонного номера

Важно!   Все данные нужно было (в уроках курса) сначала прописать в JavaScript-код в качестве переменной, чтобы скрипт мог начать работать, что и было сделано, хотя(!) на практике так не делают!Практически делают так: смотреть Пример №4.

* * *

Ну а здесь, поскольку это учебные примеры регулярных выражений, то всё сделано, как объяснялось в уроках курса. Самое главное - работает исправно!

Теперь перехожу конкретно к описанию выполненного.

Присвоил переменной имя, и занёс в неё всё, что было дано: var people = "... ... ... ...";

*Дано.   Текст из имён, городов и телефонов.

Иван Иваныч, Москва, тел 8(495)162-25-35. Сергей Сергеич, Уфа, тел 7(628)185-14-15. Пал Палыч, Москва, тел 8(495)264-20-32.

*Задание.   Вывести из данного текста 1-ый московский номер телефона, т.е. единственный, самый первый, который начинается с 8(495).

O.K! Сделано! Вот такая конструкция: var regV = /8\(495\)\d{3}-\d{2}-\d{2}/; помогла это сделать. НЕ ЗАБЫВАТЬ!!! "Заслэшивать" (экранировать) нужные символы.

Экранируются нужные (т.е. служебные) символы выражений обратным слэшем\


Пример №2. Отбор заданных телефонных номеров

*Задание.   Вывести из данного выше текста ВСЕ московские номера телефонов, т.е. ВСЕ, которые начинаются с 8(495).

Такую возможность дало прибавление символа g сразу после закрытия регулярного выражения: var regV = /8\(495\)\d{3}-\d{2}-\d{2}/g;
Подобные символы называют: модификатор шаблона.

Кстати!  Номера, отобранные JavaScript в соответствии с выражением в шаблоне, скрипт вывел через запятую → ,   Это разделитель "по умолчанию".
Так скрипт разделяет найденные им в текстовых данных соответствия шаблону.

*Prim.  Конечно, можно было бы добавить в написанный шаблон, т.е. в регулярное выражение, ещё дополнительные указания (символы), чтобы скрипт выводил в столбик, или ещё как-то, но "по умолчанию" - так.Как в нём заложено.


Пример №3. Вывод почтовых адресов

*Дано.   Текст письма с почтовыми адресами.

В полученном письме содержатся: первый почтовый адрес test@mail.ru, второй адрес test@rambler.ru, третий test@yandex.ru, и ещё Test_k@mail.ru в конце письма.

*Задание.   Вывести из текста письма ВСЕ имеющиеся в нём почтовые адреса.

O.K! Сделано с помощью конструкции, которую показываю ниже.

var RegExp = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/g;

Кстати!  Это же регулярное выражение можно и короче прописать!

Вот так: var RegExp = /(\w+@[a-zA-Z]+?\.[a-zA-Z]{2,6})/g;

Во втором показанном примере кода у буквы Z отсутствует нижнее подчёркивание, но они работают одинаково - и это, и верхнее. Проверял!


Особенный!Пример №4. Вывод почты из внешнего текста

Не случайно отметил золотой звёздочкой этот подраздел. Он того стоит! Заслужил!
Если в 3-ёх предыдущих примерах весь текст из графы "*Дано" прописывался ещё и внутрь js-кода (дублировался), то в этом примере JavaScript его получает сам!

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

var primer = document.getElementById('proba').innerHTML;

А теперь сам пример.

*Дано.   Текст для его обработки по его идентификатору (id).

Пробный текст для вывода почты test@mail.ru и test@yandex.ru, и ещё test@google.com.

*Задание.   Вывести из текста письма имеющиеся в нём почтовые адреса, НО(!) БЕЗ вставки самого текста в переменную скрипта.

O.K! Сделано! Кроме добавления в код упомянутой строчки, поменял лишь имена переменных в нём.
А логика кода связки полученного скриптом извне с имеющимся регулярным выражением такая же: var gotovo = primer.match(RegExp);

Ну, и вывод отобранного аналогичен: document.write(gotovo);

* * *

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


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

И, наконец, использование регулярного выражения в практических целях, а не как выполнение домашнего задания, можно посмотреть в последнем подразделе страницы "Управляемая анимация".
Вот ссылка на этот подраздел: "JavaScript-код регулятора" (откроется в новом окне).

* * *

А теперь пора отдать обещанное мною в начале страницы.Самое время!


Справочное пособие и шпаргалка регулярных выражений

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

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

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

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

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

Вот они: Регулярные выражения


Нижний синий мини-навигатор вернёт Вас обратно в общий раздел JavaScript.

Назад в JavaScript

ВВЕРХ

Все права защищены. Copyright © 2009 - Коротеев Владимир.

Яндекс.Метрика