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

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

Здравствуйте! Этой статьей я начинаю цикл уроков по  регулярным выражениям. Регулярные выражения – представляют  собой  мощное средство для поиска и замены в строке.

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

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

 

 

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

Регулярное выражение,  как правило состоит из шаблона  и необязательных флагов.

Давайте рассмртим как  создаются  регулярные выражения:

var reg = new RegExp(/\d/, "gim");

Но есть и другая форма записи ( это шаблон внутри слешей «/»):

var reg = /[a-z]/; // без флагов
var reg = /[a-z]/gmi; // с флагами gmi (о них их дальше)

Слеши «/» говорят движку JavaScript о том, что это регулярное выражение. Это как кавычки при создании строк.

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

Основа  основ регулярного выражения – это  паттерн или шаблон. Это собственно строка, которую можно расширить символами,  для того чтобы  поиск  был намного мощнее.

Давайте рассмотрим простейший  случай, без флагов и специальных символов:

var str1 = "Я люблю Регулярные выражения!"; // будем искать в этой строке
var reg = /лю/;
alert( str.search(reg) ); // 2

Для сравнения вот обычный поиск:

var str1 = "Я люблю регулярные выражения!";
var substr1 = "лю";
alert( str.indexOf(substr1) ); // 2

Как видите, в принципе все то же самое, разве только что для регулярки был использован метод search – а вот он как раз работает с регулярными выражениями, а для поиска подстроки – indexOf.

Но это так только кажется. Чуть позже мы усложним примеры с регулярными выражениями, и тогда сразу увидим, что регулярки гораздо мощнее.

Флаги.

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

Читайте также  Начало строки ^ и конец $ в регулярных выражениях

В JavaScript их всего три:

i
Если этот флаг установлен, то регулярное выражение осуществляет регистронезависимый поиск, то есть  нет различий между большими и маленькими буквами  А и а.
g
Если этот флаг установлен, то регулярное выражение  будет искать все совпадения,  если нет – только первое.
m
Если этот флаг установлен, то поиск осуществляется в  многострочном тексте.

Самый конечно  простой из этих флагов –  это  i.

Вот пример его использования:

                        

 var str1 = "Я люблю регулярные выражения!"; //ищем в этой строке alert( str.search( /ЛЮ/ ) ); // -1 alert( str.search( /ЛЮ/i ) ); // 2
  1. С шаблном /ЛЮ/ вызов нам вернул -1, что будет означать что «не найдено» (как и собственно в indexOf),
  2. С шаблоном /ЛЮ/i вызов нашёл совпадение на позиции 2, потому что установлен флаг i, а это значит «лю» тоже подходит.

Другие флаги будут рассмотрены в последующих уроках.

Итоги

  • Регулярные выражения состоят из паттерна и флагов g, i и m.
  • Поиск по регулярному выражению без флагов и спец. символов, которые мы изучим далее – это то же самое, что и обычный поиск подстроки в строке. Но флаги и спец. символы, как мы увидим далее, могут сделать его гораздо мощнее.
  • Метод строки str.search(regexp) возвращает индекс, на котором найдено совпадение.

Смотрите видеоурок по регулярным выражениям.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Плюсануть
Поделиться

Также читайте

Читайте также  Методы RegExp и String для работы с регулярными выражениями

Об авторе

admin administrator

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: