Флаги регулярных выражений

Для настройки событий Шаблон или Deeplink при необходимости можно указывать флаги регулярных выражений.

Флаг «i»

Если этот флаг есть, то regexp ищет независимо от регистра, не различает между A и a.

Это значит, что если задан флаг i, то значение, из-за которого срабатывает шаблон, можно будет писать как с маленькой, так и с большой буквы.

Например, если Шаблон срабатывает на слово Привет, то с флагом i, он будет срабатывать в таких вариантах: Привет, привет, ПрИвЕт и т.д.

Флаг «g»

Флаг g называется глобальным или global. Он включает поиск всех сопоставлений в строке и не останавливает поиск после первого совпадения. Если этот флаг есть, то regexp ищет все совпадения, иначе — только первое.

Например, есть регулярное выражение /aa/ и строка aa aa aa.

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

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

Посмотреть пример использования можно тут.

Флаг «m»

Многострочный режим включается флагом m.

Он влияет только на поведение ^ и $. В многострочном режиме они означают не только начало/конец текста, но и начало/конец каждой строки в тексте.

Например, есть текст:

1е место: Винни
2е место: Пятачок
3е место: Слонопотам

И регулярное выражение ^\d с флагом g (поиск цифры в начале текста).

Без флага m оно вернет только единицу. Но если добавить флаг m, то поиск цифры будет вестись в каждой строке текста из-за чего мы в ответе получим 1, 2, 3.

Посмотреть пример можно тут.

Символ доллара $ ведёт себя аналогично. Регулярное выражение \d$ ищет последнюю цифру в каждой строке.

Например, есть такой текст:

Винни: 1
Пятачок: 2
Слонопотам: 3

Без флага m якорь $ обозначал бы конец всей строки, и была бы найдена только последняя цифра.

Посмотреть пример можно тут.

В начало ↑

Была ли статья полезна?

Да Нет