# Многострочный режим, флаг "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 ``` Это потому что в обычном режиме каретка ^ -- это только начало текста, а в многострочном -- начало любой строки. Движок регулярных выражений двигается по тексту, и как только видит начало строки, начинает искать там \d+. ## Конец строки $ Символ доллара $ ведёт себя аналогично. Регулярное выражение [а-я]+$ в следующем примере находит последнее слово в каждой строке: ```js //+ run var str = '1е место: Винни\n' + '2е место: Пятачок\n' + '33е место: Слонопотам'; alert( str.match(/[а-я]+$/gim) ); // Винни,Пятачок,Слонопотам ``` Без флага m якорь $ обозначал бы конец всего текста, и было бы найдено только последнее слово. [smart header="Якорь `$` против `\n`"] Для того, чтобы найти конец строки, можно использовать не только `$`, но и символ `\n`. Но, в отличие от `$`, символ `\n` во-первых берёт символ в результат, а во-вторых -- не совпадает в конце текста (если, конечно, последний символ -- не конец строки). Посмотрим, что будет с примером выше, если вместо [а-я]+$ использовать [а-я]+\n: ```js //+ run var str = '1е место: Винни\n' + '2е место: Пятачок\n' + '33е место: Слонопотам'; alert( str.match(/[а-я]+\n/gim) ); /* Винни ,Пятачок */ ``` Всего два результата: Винни\n (с символом перевода строки) и Пятачок\n. Последнее слово "Слонопотам" здесь не даёт совпадения, так как после него нет перевода строки. [/smart] ## Итого В мультистрочном режиме: Оба символа являются проверками, они не добавляют ничего к результату. Про них также говорят, что "они имеют нулевую длину".