--- title: 'SyntaxError: invalid regular expression flag "x"' slug: Web/JavaScript/Reference/Errors/Bad_regexp_flag tags: - Error - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag ---
JavaScript の例外 "invalid regular expression flag" は、正規表現リテラルにおいて 2 番目のスラッシュの後に定義されたフラグが、 g
, i
, m
, s
, u
, y
のどれでもないときに発生します。
SyntaxError: Syntax error in regular expression (Edge) SyntaxError: invalid regular expression flag "x" (Firefox) SyntaxError: Invalid regular expression flags (Chrome)
{{jsxref("SyntaxError")}}
コード内に、不正な正規表現フラグがあります。スラッシュで囲まれたパターンで構成される正規表現リテラルでは、フラグは 2 番目のフラグの後に定義されます。 {{jsxref("RegExp")}} オブジェクトのコンストラクター関数 (2 つ目の引数) で定義することもできます。正規表現フラグは個別に使うこともできれば、好きな順序で複数使うこともできますが、 ECMAScript では 6 つしかありません。
正規表現にフラグを含めるには、次の構文を使用します。
var re = /pattern/flags;
または、
var re = new RegExp('pattern', 'flags');
フラグ | 説明 |
---|---|
g |
グローバル検索 |
i | 大文字小文字を区別した検索 |
m | 複数行検索 |
s | . で改行文字に一致できるようにする (ECMAScript 2018 で追加) |
u | Unicode。パターンを Unicode コードポイントの並びとして扱う。 |
y | 対象の文字列の現在の位置から一致を探す "sticky" 検索。 {{jsxref("RegExp.sticky", "sticky")}} を見てください。 |
有効な正規表現フラグは 6 つしかありません。
/foo/bar; // SyntaxError: invalid regular expression flag "b"
正規表現を生成するつもりでなくても、 2 つのスラッシュを含む式は正規表現リテラルとして解釈されます。
let obj = { url: /docs/Web }; // SyntaxError: invalid regular expression flag "W"
文字列を生成する場合、文字列リテラルを生成するためには単一引用符、または二重引用符を追加します。
let obj = { url: '/docs/Web' };
JavaScript で使用できる 6 つの正規表現フラグについては、上述の表を見てください。
/foo/g; /foo/gims; /foo/uy;
n
, s
, x
, A
)