Вебсправочник
Справочник JavaScript

RegExp.flags: прочитать режимы регулярного выражения

Свойство flags возвращает строку флагов регулярного выражения. Оно полезно для диагностики и создания нового выражения с теми же режимами без ручного чтения литерала.

Назначение

Свойство flags возвращает строку флагов регулярного выражения. Оно полезно для диагностики и создания нового выражения с теми же режимами без ручного чтения литерала.

Как это работает

Порядок флагов в результате нормализован. Флаги g, i, m и другие меняют разные аспекты поиска. Flags не следует рассматривать как изменяемый список: для нового набора создают новый объект RegExp.

Пример

const expression = new RegExp("lesson", "ig");
console.assert(expression.flags === "gi");
console.assert(expression.global && expression.ignoreCase);
const exactCase = new RegExp(expression.source, expression.flags.replace("i", ""));
console.assert(exactCase.flags === "g");
console.assert(expression.flags === "gi");
console.log(expression.flags, exactCase.flags);

Что должно получиться

Исходная запись ig представлена как gi. Новый объект сохраняет глобальный режим, но теряет нечувствительность к регистру. Исходное выражение остаётся с прежними флагами.

Граница применения и частая ошибка

Нельзя произвольно повторять или комбинировать любые буквы: недопустимые флаги вызывают SyntaxError. Смена g влияет на состояние lastIndex и форму результатов некоторых строковых методов. Проверьте поддержку новых флагов в целевой среде.

Самостоятельная проверка

Сравните результаты поиска по текстам lesson и LESSON до и после удаления i. Создайте отдельный пример с m и многострочной строкой. Объясните, почему m не означает поиск всех совпадений.

Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.