Spec-Zone.ru › JavaScript

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)

Тип ошибки

SyntaxError

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

Регулярное выражение содержит недопустимые флаги, или допустимые флаги были использованы более одного раза в выражении.

Допустимые (разрешенные) флаги: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API