![]() ![]() ![]() ![]() Регулярные выраженияЧто такое, и зачем нужны регулярные выраженияРегулярные выражения - 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 отсутствует нижнее подчёркивание, но они работают одинаково - и это, и верхнее. Проверял!
|
Все права защищены. Copyright © 2009 - Коротеев Владимир.