# Многострочный режим, флаг "m"
Многострочный режим включается, если у регэкспа есть флаг /m
.
[cut]
В этом случае изменяется поведение ^
и $
.
**В многострочном режиме якоря означают не только начало/конец текста, но и начало/конец строки.**
В примере ниже текст состоит из нескольких строк. Паттерн /^\d+/gm
берёт число с начала каждой строки:
```js
//+ run
var str = '1е место: Винни-пух\n' +
'2е место: Пятачок\n' +
'33е место: Слонопотам';
alert( str.match(/^\d+/gm ) ); // 1, 2, 33*!*
```
Обратим внимание -- без флага /m
было бы только первое число:
```js
//+ run
var str = '1е место: Винни-пух\n' +
'2е место: Пятачок\n' +
'33е место: Слонопотам';
alert( str.match(/^\d+/g ) ); // 1
```
Это потому что в обычном режиме каретка ^
-- это только начало текста.
Символ доллара $
ведёт себя точно так же.
Следующий пример находит последнее слово в строке:
TODO: указать на коренное отличие $ от \n: доллар не матчит символ, а \n матчит!!!!
```js
//+ run
showMatch(
'1st: *!*John*!*\n' +
'2nd: *!*Mary*/!*\n' +
'33rd: *!*Peter*/!*', /\w+$/gm ) // John, Mary, Peter
```
Please note that $
as well as ^
doesn't add \n
to the match. They only check that the position is right.
[summary]
'^'
matches the position at the the text start. *In multiline mode* it also matches after the newline symbol.'$'
matches the position at the text end. *In multiline mode* it also matches before the newline symbol.