Перейти к содержимому

Флаг m (Multiline) в регулярных выражениях JavaScript

Введение в многострочный режим

Флаг m в JavaScript регулярных выражениях позволяет якорям ^ и $ соответствовать началу и концу каждой строки в многострочной строке, а не только началу и концу всей строки. Это особенно полезно при работе с многострочным текстом, когда необходимо выполнять поиск по шаблону построчно.

Флаг m: включение многострочного режима

При использовании флага m якоря ^ и $ соответствуют позициям до и после переносов строк внутри строки.

Использование флага m


Output appears here after Run.

В этом примере регулярное выражение ^abc соответствует началу каждой строки, начинающейся с «abc», благодаря флагу m. Флаг g гарантирует, что будут найдены все совпадения. Без флага m оно нашло бы «abc» только в самом начале строки.

Пример: поиск по нескольким строкам


Output appears here after Run.

Здесь регулярное выражение ^start соответствует началу строк, которые начинаются со слова «start», благодаря комбинации флагов m и g.

Практическое применение

Поиск строк в многострочном тексте

Флаг m особенно полезен для поиска конкретных шаблонов в начале или в конце каждой строки многострочной строки.


Output appears here after Run.

Этот пример показывает, как ^hello с флагом m находит «hello» в начале каждой строки.

Поиск конца строк в многострочном тексте

Аналогичным образом вы можете использовать флаг m для поиска шаблонов в конце каждой строки.


Output appears here after Run.

Здесь world$ с флагом m находит «world» в конце каждой строки.

Пример: извлечение конкретных строк


Output appears here after Run.

Этот пример демонстрирует, как извлечь все строки, начинающиеся с «Error:», из файла журнала с помощью флага m.

Комбинирование флагов

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

Пример: регистронезависимый многострочный поиск


Output appears here after Run.

В этом примере регулярное выражение находит строки, содержащие «hello», независимо от регистра, благодаря комбинации флагов m и i.

  • Шаблон регулярного выражения ^.*hello.*$ соответствует любой строке, содержащей «hello», независимо от регистра.
  • Флаг m гарантирует, что каждая строка в многострочной строке обрабатывается отдельно.
  • Hello world, hello world и HELLO WORLD все соответствуют шаблону, поскольку содержат «hello» (без учета регистра) где-то в строке.

INFO

Используйте флаг m в регулярных выражениях JavaScript, чтобы применить якоря ^ и $ к каждой строке многострочной строки, что улучшает возможности проверки и обработки содержимого построчно.

Использование флага m для построчной проверки

Флаг m идеально подходит для сценариев, где необходимо проверить или обработать каждую строку отдельно внутри многострочной строки.

Пример: проверка номера телефона США


Output appears here after Run.

Это регулярное выражение гарантирует, что номер телефона имеет формат (123) 456-7890. Оно использует ^ для обозначения начала и $ для обозначения конца, обеспечивая полное совпадение всей строки с указанным шаблоном для каждой строки.

Таким образом, как "(123) 456-7890", так и "(234) 567-8901" соответствуют шаблону регулярного выражения, поскольку они следуют формату (xxx) xxx-xxxx, который предназначен для поиска данного регулярного выражения.

Заключение

Флаг m в регулярных выражениях JavaScript расширяет функциональность якорей ^ и $, позволяя им соответствовать началу и концу каждой строки в многострочной строке. Эта возможность бесценна при обработке многострочных текстовых данных, обеспечивая точный построчный поиск по шаблону и проверку.

Практика

Какова функция флага 'm' в регулярных выражениях JavaScript?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.