このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
RegExp.prototype.ignoreCase
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
ignoreCase はRegExp インスタンスのアクセサープロパティで、i フラグが正規表現で使われているかどうかを示します。
In this article
試してみましょう
const regex1 = /foo/;const regex2 = /foo/i;console.log(regex1.test("Football"));// 予想される結果: falseconsole.log(regex2.ignoreCase);// 予想される結果: trueconsole.log(regex2.test("Football"));// 予想される結果: true解説
RegExp.prototype.ignoreCase は、i フラグが指定されている場合はtrue を、そうでなければfalse を返します。i フラグは、文字列の照合を試みる際に、大文字小文字を無視することを示します。大文字小文字を区別しない照合は、期待される文字セットと照合する文字列を同じ大文字小文字に対応付けすることで行われます。
正規表現がUnicode 対応の場合、大文字小文字の対応付けはCaseFolding.txt で指定された単純な大文字小文字の変換を行います。この対応付けは常に 1 つのコードポイントに対応付けされるので、例えばß (U+00DF LATIN SMALL LETTER SHARP S) をss に対応付けすることはありません(単純な大文字小文字の変換ではなく完全な大文字小文字の変換です)。例えば、ſ (U+017F LATIN SMALL LETTER LONG S) はs (U+0073 LATIN SMALL LETTER S) に、K (U+212A KELVIN SIGN) はk (U+006B LATIN SMALL LETTER K) に大文字小文字を区別します。したがって、ſ とK は/[a-z]/ui で一致します。
正規表現が Unicode 非対応の場合、大文字小文字の対応付けはUnicode 既定の大文字小文字変換 を使用します。String.prototype.toUpperCase() で使用されているアルゴリズムと同じです。このアルゴリズムは、基本ラテン文字ブロック外のコードポイントが同ブロック内のコードポイントにマッピングされるのを防ぐため、前述のſ やK は/[a-z]/i では一致しません。
Unicode 対応の大文字小文字変換は、通常小文字に変換される一方、Unicode 非対応の大文字小文字変換は大文字に変換されます。これら二者は完全な逆操作ではないため、微妙な動作の違いが存在します。例えば、Ω (U+2126 OHM SIGN, オーム記号) とΩ (U+03A9 GREEK CAPITAL LETTER OMEGA, ギリシャ語のオメガの大文字) は、既定の大文字小文字変換によってそれ自体に対応付けされますが、単純な大文字小文字の変換ではω (U+03C9 GREEK SMALL LETTER OMEGA, ギリシャ語のオメガの小文字) に対応付けされるため、"\u2126" は/[\u03c9]/ui と/[\u03a9]/ui に一致します。一方、U+2126 はデフォルトの大文字小文字変換によって自身にマッピングさ れますが、他の二つは両方とも U+03A9 にマッピングされるため、"\u2126" は/[\u03c9]/i にも/[\u03a9]/i にも一致しません。
ignoreCase の設定アクセサーはundefined です。このプロパティを直接変更することはできません。
例
>ignoreCase の使用
const regex = /foo/i;console.log(regex.ignoreCase); // true仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-get-regexp.prototype.ignorecase> |