SyntaxError: недопустимый флаг регулярного выражения "x"
Исключение JavaScript "invalid regular expression flag" возникает, когда флаги в регулярном выражении содержат любой флаг, который не является одним из: d, g, i, m, s, u, v, или y. Оно также может быть вызвано, если выражение содержит более одного экземпляра допустимого флага, или когда флаги u и v используются вместе.
Сообщение
SyntaxError: Invalid flags supplied to RegExp constructor 'x' (V8-based) SyntaxError: Invalid regular expression flags (V8-based) SyntaxError: invalid regular expression flag x (Firefox) SyntaxError: Invalid flags supplied to RegExp constructor. (Safari) SyntaxError: Invalid regular expression: invalid flags (Safari)
Тип ошибки
Что пошло не так?
Регулярное выражение содержит недопустимые флаги, или допустимые флаги были использованы более одного раза в выражении.
Допустимые (разрешенные) флаги: d, g, i, m, s, u, v, и y. Они более подробно представлены в Регулярные выражения > Расширенный поиск с флагами.
Флаги u и v являются взаимоисключающими, поэтому они не могут использоваться вместе. Вы можете прочитать справочные материалы, чтобы понять, в чем заключаются различия в их поведении.
Примеры
В литерале регулярного выражения, который состоит из шаблона, заключенного между слешами, флаги определяются после второго слеша. Флаги регулярного выражения могут использоваться отдельно или вместе в любом порядке. Этот синтаксис показывает, как объявить флаги, используя литерал регулярного выражения:
const re = /pattern/flags;
Они также могут быть определены в функции-конструкторе объекта RegExp (второй параметр):
const re = new RegExp("pattern", "flags");
Вот пример, показывающий использование только корректных флагов.
/foo/g; /foo/gims; /foo/uy;
Ниже приведен пример, демонстрирующий использование некоторых недопустимых флагов b, a и r:
/foo/bar; // SyntaxError: invalid regular expression flag "b"
Приведенный ниже код неверен, поскольку W, e и b не являются допустимыми флагами.
const obj = {
url: /docs/Web,
};
// SyntaxError: invalid regular expression flag "W"
Выражение, содержащее два слеша, интерпретируется как литерал регулярного выражения. Скорее всего, целью было создать строковый литерал, используя одинарные или двойные кавычки, как показано ниже:
const obj = {
url: "/docs/Web",
};
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_regexp_flag