--- title: 'SyntaxError: invalid regular expression flag "x"' slug: Web/JavaScript/Reference/Errors/Bad_regexp_flag translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag ---
{{jsSidebar("Errors")}}

Сообщение

SyntaxError: invalid regular expression flag "x" (Firefox)
SyntaxError: Invalid regular expression flags (Chrome)

Тип ошибки

{{jsxref("SyntaxError")}}

Что пошло не так?

В коде есть недопустимые флаги регулярных выражений. Литерал в регулярном выражении, который содержит шаблон заключённый между двумя слешами, флаги определяются после второго флага. Они также могут быть объявлены в конструкторе функции {{jsxref("RegExp")}} object (второй параметр). Флаги регулярного выражения могут быть использованы отдельно или вместе в любой очерёдности, но в ECMAScript их только пять.

Чтоб включить флаг в регулярное выражение, используйте синтаксис:

var re = /pattern/flags;

или

var re = new RegExp('pattern', 'flags');

Флаги регулярного выражения

Флаг Описание
g Глобальный поиск.
i Нечувствительный к регистру поиск.
m Поиск по всем строкам.
u Unicode; обрабатывать шаблон как последовательность кода Unicode
y Выполняет «липкий» поиск, который будет начинаться с текущей позиции в целевой строке. См. {{jsxref("RegExp.sticky", "sticky")}}

Примеры

Существует только пять действительных флагов регулярных выражений.

/foo/bar;

// Ошибка синтаксиса: недействительный флаг "b" для регулярного выражения

Вы намеревались создать регулярное выражение? Выражение, содержащее два слеша, интерпретируется как литерал регулярного выражения.

let obj = {
  url: /docs/Web
};

// Ошибка синтаксиса: недействительный флаг "W" для регулярного выражения

Или вы хотели создать строку вместо этого? Добавьте одинарные или двойные кавычки, чтобы создать строковый литерал. 

let obj = {
  url: '/docs/Web'
};

Действительные флаги регулярного выражения 

Взгляните на таблицу выше, где представлены пять действительных флагов регулярного выражения, которые разрешены в JavaScript

/foo/g;
/foo/gim;
/foo/uy;

Смотрите также