# Многострочность в регулярках JavaScript

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

`let str = `111 222 333 444`;`

## Перевод строки

Символы перевода строки можно поймать с помощью команды `'\n'`:

`let res = str.replace(/\n/g, '!');`

В результате в переменную запишется следующее (промежутки между строками - это табуляция):

``111! 222! 333! 444`;`

## Табуляция

Символы табуляции можно поймать с помощью команды `'\t'`:

`let res = str.replace(/\t/g, '!');`

В результате в переменную запишется следующее:

`` 111 !222 !333 !444 `;`

## Работа точки

Команда `'.'` для многострочной строки не ловит символы перевода строки:

`let res = str.replace(/./g, '!');`

В результате в переменную запишется следующее:

`` !!! !!!! !!!! !!!! `;`

## Любой символ

Чтобы поймать все символы в многострочной строке, используется хитрый прием в виде сочетания `[\s\S]`. Такая конструкция найдет все обычные символы и все переводы строк:

`let res = str.replace(/[\s\S]/g, '!');`

В результате в переменную запишется следующее:

``!!!!!!!!!!!!!!!!!!`;`

## Шляпка

С помощью модификатора `'m'` можно включить многострочный режим. В этом случае шляпка будет ловить начало каждой строки:

`let res = str.replace(/^/gm, '!');`

В результате в переменную запишется следующее:

`` !111 !222 !333 !444 `;`

## Доллар

Команда `'$'` в многострочном режиме будет ловить конец каждой строки:

`let res = str.replace(/$/gm, '!');`

В результате в переменную запишется следующее:

`` 111! 222! 333! 444! `;`

## Практические задачи

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

`` abc! def! ghi! jkl! `;`

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

`` ! abc ! def ! ghi ! jkl `;`

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

``! abc def ghi jkl !`;`

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

``! ! abc ! def ! ghi ! jkl !`;`

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

``! abc! def! ghi! jkl! !`;`

Дана строка:

`` abc def ghi jkl `;`

Напишите регулярку, которая сделает из этой строки следующую:

`` !abc !def !ghi !jkl `;`
←→
↑
en ru