RegExp.prototype.ignoreCase

ignoreCase プロパティは、"i" フラグが正規表現で使われているかどうかを示します。ignoreCase は、正規表現インスタンスごとの読み取り専用プロパティです。

試してみましょう

解説

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) に、 (U+212A KELVIN SIGN) は k (U+006B LATIN SMALL LETTER K) に大文字小文字を区別します。したがって、ſ/[a-z]/ui で一致します。

正規表現が Unicode 非対応の場合、大文字小文字の対応付けは Unicode 既定の大文字小文字変換 を使用します。String.prototype.toUpperCase() で使用されているアルゴリズムと同じです。例えば、 (U+2126 OHM SIGN, オーム記号) と Ω (U+03A9 GREEK CAPITAL LETTER OMEGA, ギリシャ語のオメガの大文字) は、既定の大文字小文字変換によってそれ自体に対応付けされますが、単純な大文字小文字の変換では ω (U+03C9 GREEK SMALL LETTER OMEGA, ギリシャ語のオメガの小文字) に対応付けされるため、"ω"/[\u2126]/ui/[\u03a9]/ui に一致しますが、/[\u2126]/i/[\u03a9]/i には一致しません。このアルゴリズムは、基本ラテンブロック外のコードポイントがブロック内のコードポイントに対応付けされるのを防ぐため、前述の ſ/[a-z]/i では一致しません。

ignoreCase の設定アクセサーは undefined です。このプロパティを直接変更することはできません。

ignoreCase の使用

js
const regex = /foo/i;

console.log(regex.ignoreCase); // true

仕様書

Specification
ECMAScript Language Specification
# sec-get-regexp.prototype.ignorecase

ブラウザーの互換性

BCD tables only load in the browser

関連情報