Флаг m (Multiline) в регулярных выражениях JavaScript
Введение в многострочный режим
Флаг m в JavaScript регулярных выражениях позволяет якорям ^ и $ соответствовать началу и концу каждой строки в многострочной строке, а не только началу и концу всей строки. Это особенно полезно при работе с многострочным текстом, когда необходимо выполнять поиск по шаблону построчно.
Флаг m: включение многострочного режима
При использовании флага m якоря ^ и $ соответствуют позициям до и после переносов строк внутри строки.
Использование флага m
В этом примере регулярное выражение ^abc соответствует началу каждой строки, начинающейся с «abc», благодаря флагу m. Флаг g гарантирует, что будут найдены все совпадения. Без флага m оно нашло бы «abc» только в самом начале строки.
Пример: поиск по нескольким строкам
Здесь регулярное выражение ^start соответствует началу строк, которые начинаются со слова «start», благодаря комбинации флагов m и g.
Практическое применение
Поиск строк в многострочном тексте
Флаг m особенно полезен для поиска конкретных шаблонов в начале или в конце каждой строки многострочной строки.
Этот пример показывает, как ^hello с флагом m находит «hello» в начале каждой строки.
Поиск конца строк в многострочном тексте
Аналогичным образом вы можете использовать флаг m для поиска шаблонов в конце каждой строки.
Здесь world$ с флагом m находит «world» в конце каждой строки.
Пример: извлечение конкретных строк
Этот пример демонстрирует, как извлечь все строки, начинающиеся с «Error:», из файла журнала с помощью флага m.
Комбинирование флагов
Вы можете комбинировать флаг m с другими флагами для улучшения регулярных выражений. Например, сочетание флага m с регистронезависимым флагом i позволяет выполнять поиск без учета регистра в многострочном режиме.
Пример: регистронезависимый многострочный поиск
В этом примере регулярное выражение находит строки, содержащие «hello», независимо от регистра, благодаря комбинации флагов m и i.
- Шаблон регулярного выражения
^.*hello.*$соответствует любой строке, содержащей «hello», независимо от регистра. - Флаг
mгарантирует, что каждая строка в многострочной строке обрабатывается отдельно. Hello world,hello worldиHELLO WORLDвсе соответствуют шаблону, поскольку содержат «hello» (без учета регистра) где-то в строке.
INFO
Используйте флаг m в регулярных выражениях JavaScript, чтобы применить якоря ^ и $ к каждой строке многострочной строки, что улучшает возможности проверки и обработки содержимого построчно.
Использование флага m для построчной проверки
Флаг m идеально подходит для сценариев, где необходимо проверить или обработать каждую строку отдельно внутри многострочной строки.
Пример: проверка номера телефона США
Это регулярное выражение гарантирует, что номер телефона имеет формат (123) 456-7890. Оно использует ^ для обозначения начала и $ для обозначения конца, обеспечивая полное совпадение всей строки с указанным шаблоном для каждой строки.
Таким образом, как "(123) 456-7890", так и "(234) 567-8901" соответствуют шаблону регулярного выражения, поскольку они следуют формату (xxx) xxx-xxxx, который предназначен для поиска данного регулярного выражения.
Заключение
Флаг m в регулярных выражениях JavaScript расширяет функциональность якорей ^ и $, позволяя им соответствовать началу и концу каждой строки в многострочной строке. Эта возможность бесценна при обработке многострочных текстовых данных, обеспечивая точный построчный поиск по шаблону и проверку.
Практика
Какова функция флага 'm' в регулярных выражениях JavaScript?