Регулярные выраженияЧто такое, и зачем нужны регулярные выраженияРегулярные выражения - Regular Expressions, а сокращённо - RegExp разработаны для извлечения информации из строковых объектов веб-страниц, т.е. из текста. Их постоянно применяют, когда нужно найти одно или несколько совпадений в больших объёмах текста. Для этого составляют определённые шаблоны. А вот как раз эти самые шаблоны и называются регулярными выражениями. И в них задаются правила поиска нужной информации, т.е. его алгоритмы Эти выражения состоят из определённой последовательности разных символов: скобок, слэшей, букв и цифр, специальных знаков, которые есть на клавиатуре компьютера, и которые прописываются в создаваемых шаблонах по строго определённым правилам. Хоть составленные выражения вставляются внутрь кода JavaScript, но, фактически, это целый мини-язык программирования и, надо сказать, довольно-таки путаный. Однако, регулярные выражения очень эффективны! А кроме того, они подходят, практически, для любого языка программирования, а не только для JavaScript. Их используют постоянно для создания собственных поисковиков по всем материалам сайта, что облегчает посетителю поиск нужной ему информации. Особенно необходимы подобные поисковые системы для сайтов с БОЛЬШИМ количеством текстовых материалов: интернет-магазины, порталы госуслуг, справочные сайты, форумы, и так далее. Короче, на таких ресурсах регулярные выражения применяются постоянно, и там без них просто-напросто не обойтись! А чтобы было легче с ними дело иметь, я сохранил в конце страницы, и даю скачать подробное пособие и шпаргалку по составлению регулярных выражений. * * * Дальше показываю код и примеры составленных выражений, но желающие могут упомянутые пособия скачать сразу: Примеры регулярных выраженийПоиск целого выражения, а НЕ индекс его начала. Решил оформить этот подраздел как "выполнение домашних заданий" по нескольким из уроков обучающего диска. Оформление► Текстовые данные для выборки выделил белым фоновым цветом. Пример №1. Выбор одного телефонного номераВажно! Все данные нужно было (в уроках курса) сначала прописать в JavaScript-код в качестве переменной, чтобы скрипт мог начать работать, что и было сделано, хотя(!) на практике так не делают! Практически делают так: смотреть * * * Ну а здесь, поскольку это учебные примеры регулярных выражений, то всё сделано, как объяснялось в уроках курса. Самое главное - работает исправно! Теперь перехожу конкретно к описанию выполненного. Присвоил переменной имя, и занёс в неё всё, что было дано: 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. Вывод почты из внешнего текстаНе случайно отметил золотой звёздочкой этот подраздел. Он того стоит!
Именно так скрипты регулярных выражений работают с текстом практически! А код их сложнее всего на одну строчку. var primer = document.getElementById('proba').innerHTML; А теперь сам пример. *Дано. Текст для его обработки по его идентификатору (id). Пробный текст для вывода почты test@mail.ru и test@yandex.ru, и ещё test@google.com. *Задание. Вывести из текста письма имеющиеся в нём почтовые адреса, НО(!) БЕЗ вставки самого текста в переменную скрипта. O.K! Сделано! Кроме добавления в код упомянутой строчки, поменял лишь имена переменных в нём. Ну, и вывод отобранного аналогичен: document.write(gotovo); * * * Далее ещё один пример практического использования регулярных выражений. Пример №5. Использование регулярных выраженийИ, наконец, использование регулярного выражения в практических целях, а не как выполнение домашнего задания, можно посмотреть в последнем подразделе
страницы "Управляемая анимация". * * * А теперь пора отдать обещанное мною в начале страницы. Справочное пособие и шпаргалка регулярных выраженийСкажу лишь пару слов о составе вложенных в архив пособий. Все они в формате .pdf, и в конце основного, содержащего подробное описание основ этого мини-языка, есть ещё ссылки на очень полезные он-лайн сервисы. Один из таких сервисов - громадная библиотека регулярных выражений, которая содержит не только их рейтинги, но и описания,
для чего они составлены, данные авторами этих выражений. Главное же(!), о чём нужно всегда помнить, скопировав из библиотеки какие-либо регулярные выражения, что они составлены для английского текста, а поэтому эти выражения необходимо будет дорабатывать, вставляя (где требуется) русские буквы, и меняя форматы телефонных номеров. Впрочем, изучив тщательно данное ниже пособие, которое я в своё время составлял для себя, изучив и потренировавшись хотя бы дней десять на простых примерах, особых проблем с доработкой, уверен, не будет ни у кого! И здесь можно скачать, как уже говорил в начале страницы, это подробное справочное пособие и шпаргалку по составлению регулярных выражений. Нижний синий мини-навигатор вернёт Вас обратно в общий раздел JavaScript. |
Все права защищены. Copyright © 2009 - Коротеев Владимир.