базовый курс

ГРУППА КУРСА

Написание регулярных выражений

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

Регулярные выражения - серьёзный инструмент для работы с текстом. Они позволяют находить подстроку, соответствующую определённому шаблону. Также их называют RegExp. Регулярное выражение состоит из паттерна и флагов. Паттерн - это шаблон по которому ищется подстрока. а флаги определяют разные варианты поиска. Паттерн пишется между двух слэшей, которые указывают программе, что это регулярное выражение. Флаги ставятся сразу после паттерна. Пример:

+
9
let reg = /текст/i;

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

Есть другой способ написания регулярного выражения - создание объекта RegExp. паттерн и флаги пишутся в кавычках.

10
let reg = new RegExp("текст", "i");

Флаги

Существуют следующие флаги:

g - при отсутствии этого флага ищестя только первое совпадение. А если флаг есть, то ищатся все совпадения. В зависимости от этого, методы для работы с регулярками могут выполняться по-разному.

i - регистронезависимый поиск. Наличие этого флага позволяет найти совпадения без учёта регистра символов.

m - многострочный режим. Если в строке есть символ переноса строки, то общая строка рассматривается как несколько строк. Это имеет значение, так как в регулярных выражениях можно учитывать начало и конец строки.

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

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

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

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

Найдём слово "язык" в тексте:

11
12
13
14
let str = 'JavaScript и PHP - языки прогаммирования. Язык PHP серверный';
let reg = /язык/g;
let mas = str.match(reg);
document.write(mas);

В тексте слово повторяется два раза. Мы использовали флаг g, но слово найдено только один раз, потому что второе написано с большой буквы. Прибавим флаг i, тогда будет найдены оба совпадения.

В предыдущем примере регулярное выражение записано в переменную. Но его можно указывать прямо внутри методов:

16
17
mas = str.match(/язык/gi);
document.write('<br>'+mas);