メッセージ
SyntaxError: invalid regular expression flag "x" (Firefox) SyntaxError: Invalid regular expression flags (Chrome)
エラータイプ
何がうまくいかなかったのか?
コード内に、不正な正規表現フラグがあります。スラッシュで囲まれたパターンで構成される正規表現リテラルでは、フラグは 2 番目のフラグの後に定義されます。RegExp
オブジェクトのコンストラクター関数 (2 つ目の引数)で定義することもできます。正規表現フラグは個別に使うこともできれば、好きな順序で複数使うこともできますが、ECMAScript では 5 つしかありません。
規表現にフラグを含めるには、次の構文を使用します:
var re = /pattern/flags;
または、
var re = new RegExp('pattern', 'flags');
フラグ | 説明 |
---|---|
g |
グローバルサーチ。 |
i | 大文字小文字を区別したサーチ。 |
m | 複数行サーチ |
u | ユニコード; パターンを Unicode コードポイントシーケンスとして扱う。 |
y | 対象の文字列の現在の位置から一致を探す "sticky" サーチ。sticky を見てください。 |
例
有効な正規表現フラグは 5 つしかありません。
/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 で使用できる 5 つの正規表現フラグについては、上述の表を見てください。
/foo/g;
/foo/gim;
/foo/uy;
関連項目
- 正規表現
- XRegEx flags – regular expression library that provides four new flags (
n
,s
,x
,A
)