JavaScript での大文字小文字を区別しない文字列比較

Valentine Kagwiria 2023年10月12日
  1. JavaScript で大文字小文字を区別しない比較を行うには toUpperCase()/toLowerCase() 文字列メソッドを使用する
  2. JavaScript で大文字小文字を区別しない比較を行うには localeCompare() 文字列メソッドを使用する
  3. JavaScript で大文字小文字を区別しない比較を行うには正規表現メソッド RegExp を使用する
JavaScript での大文字小文字を区別しない文字列比較

この記事では、JavaScript で大文字小文字を区別しない文字列比較を行う方法を説明します。

JavaScript で大文字小文字を区別しない比較を行うには toUpperCase()/toLowerCase() 文字列メソッドを使用する

toUpperCase() メソッドでは、まず文字列を大文字か小文字に変換してから、トリプルイコール演算子 === で比較します。

以下に例を示します。

var stringA = 'This is a JavaScript tutorial';
var stringB = 'THIS is A javascript TUTORIAL';

if (stringA.toUpperCase() === stringB.toUpperCase()) {
  alert('The strings are equal.')
} else {
  alert('The strings are NOT equal.')
}

出力:

The strings are equal.

あるいは、以下の例のように toLowercase() 文字列メソッドを使って文字列を小文字に変換することもできます。

var stringA = 'This is a JavaScript tutorial';
var stringB = 'THESE are javascript TUTORIALS';

if (stringA.toLowerCase() === stringB.toLowerCase()) {
  alert('The strings are equal.')
} else {
  alert('The strings are NOT equal.')
}

出力:

The strings are NOT equal

しかし、大文字の方法が好まれることは注目に値します。アルファベットの中には、小文字に変換されたときに往復できない文字があるからです。これは本質的に、あるロケールから別のロケールに変換しても、そのデータの文字を正確に表現できない可能性があることを意味します。

JavaScript で大文字小文字を区別しない比較を行うには localeCompare() 文字列メソッドを使用する

上のメソッドは簡単な答えを与えてくれますが、文字列に Unicode 文字が含まれている場合はうまくいかないかもしれません。文字列メソッド localeCompare がこの問題を解決します。これは sensitivity: 'base' オプションと一緒に使用され、すべての Unicode 文字をキャプチャします。例えば、これを if() 文の中で使用することで、問題の文字列が等しい場合とそうでない場合の結果を得ることができます。

if ('javascript'.localeCompare('JavaScrpt', undefined, {sensitivity: 'base'}) ==
    0) {
  alert('The strings are equal')
} else {
  alert('The strings are different.')
}

出力:

The strings are different.

JavaScript で大文字小文字を区別しない比較を行うには正規表現メソッド RegExp を使用する

このメソッドでは、RegExp パターンと test() メソッドを用いて大文字小文字を区別しない文字列の比較を行います。例えば、

const strA = 'This is a case sensitive comparison';
const strB = 'This is a CASE SENSITIVE comparison';
const regex = new RegExp(strA, 'gi');
const comparison = regex.test(strB)

if (comparison) {
  alert('Similar strings');
}
else {
  alert('Different strings');
}

出力:

Similar strings

関連記事 - JavaScript String