базовый курс

ГРУППА КУРСА

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

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

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

+
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
<head>
<title>Страница</title>
<meta charset="utf-8">
</head>
<body>
<script>
9
var reg = /текст/i;

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

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

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

Флаги

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

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

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

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

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

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

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

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

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

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

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

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

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