blob: ebec276ad48e88b771eb0849a69c26cd01383936 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
---
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
---
<div>{{jsSidebar("Errors")}}</div>
<p>JavaScript の例外 "invalid regular expression flag" は、正規表現リテラルにおいて 2 番目のスラッシュの後に定義されたフラグが、 <code>g</code>, <code>i</code>, <code>m</code>, <code>s</code>, <code>u</code>, <code>y</code> のどれでもないときに発生します。</p>
<h2 id="Message">エラーメッセージ</h2>
<pre class="brush: js">SyntaxError: Syntax error in regular expression (Edge)
SyntaxError: invalid regular expression flag "x" (Firefox)
SyntaxError: Invalid regular expression flags (Chrome)
</pre>
<h2 id="Error_type">エラーの種類</h2>
<p>{{jsxref("SyntaxError")}}</p>
<h2 id="What_went_wrong">エラーの原因</h2>
<p>コード内に、不正な正規表現フラグがあります。スラッシュで囲まれたパターンで構成される正規表現リテラルでは、フラグは 2 番目のフラグの後に定義されます。 {{jsxref("RegExp")}} オブジェクトのコンストラクター関数 (2 つ目の引数) で定義することもできます。正規表現フラグは個別に使うこともできれば、好きな順序で複数使うこともできますが、 ECMAScript では 6 つしかありません。</p>
<p>正規表現にフラグを含めるには、次の構文を使用します。</p>
<pre class="brush: js">var re = /pattern/flags;
</pre>
<p>または、</p>
<pre class="brush: js">var re = new RegExp('pattern', 'flags');</pre>
<table class="standard-table">
<caption>正規表現フラグ</caption>
<thead>
<tr>
<th scope="col">フラグ</th>
<th scope="col">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>g</code></td>
<td>グローバル検索</td>
</tr>
<tr>
<td>i</td>
<td>大文字小文字を区別した検索</td>
</tr>
<tr>
<td>m</td>
<td>複数行検索</td>
</tr>
<tr>
<td>s</td>
<td><code>.</code> で改行文字に一致できるようにする (ECMAScript 2018 で追加)</td>
</tr>
<tr>
<td>u</td>
<td>Unicode。パターンを Unicode コードポイントの並びとして扱う。</td>
</tr>
<tr>
<td>y</td>
<td>対象の文字列の現在の位置から一致を探す "sticky" 検索。 {{jsxref("RegExp.sticky", "sticky")}} を見てください。</td>
</tr>
</tbody>
</table>
<h2 id="Examples">例</h2>
<p>有効な正規表現フラグは 6 つしかありません。</p>
<pre class="brush: js example-bad">/foo/bar;
// SyntaxError: invalid regular expression flag "b"
</pre>
<p>正規表現を生成するつもりでなくても、 2 つのスラッシュを含む式は正規表現リテラルとして解釈されます。</p>
<pre class="brush: js example-bad">let obj = {
url: /docs/Web
};
// SyntaxError: invalid regular expression flag "W"
</pre>
<p>文字列を生成する場合、文字列リテラルを生成するためには単一引用符、または二重引用符を追加します。</p>
<pre class="brush: js example-good">let obj = {
url: '/docs/Web'
};</pre>
<h3 id="Valid_regular_expression_flags">有効な正規表現フラグ</h3>
<p>JavaScript で使用できる 6 つの正規表現フラグについては、上述の表を見てください。</p>
<pre class="brush: js example-good">/foo/g;
/foo/gims;
/foo/uy;
</pre>
<h2 id="See_also">関連情報</h2>
<ul>
<li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a></li>
<li><a href="https://xregexp.com/flags/">XRegEx flags</a> – regular expression library that provides four new flags (<code>n</code>, <code>s</code>, <code>x</code>, <code>A</code>)</li>
</ul>
|