Javascript:任意の文字列を含むかどうかの確認方法

最終更新:2018-03-02 by Joe

Javascriptにおいて、文字列の中に、任意の文字(文字列)が含まれるかどうかをチェックする方法です。

文字列を含むかをチェックする関数: .indexOf()

Javascriptにおいて、任意の文字列のマッチングを行うには、Stringオブジェクトのメソッドである、.indexOf() が利用できます。文字列が見つかればそのインデックスを、含まれなければ「-1」を返します。

// 検索対象の文字列
var subject = 'I am your father.';

// 'father'が含まれるかどうか確認。
if (subject.indexOf('father') !== -1) {
  alert('含まれています。');
} 

Javasccriptにおいて、-1 はBooleanでは、trueとなりますので、自動キャストを利用せず、必ず上記のように「-1ではない」事をもって結果を確認してください。含まれる場合は0位上の整数が返ってきます。

また、indexOf() は大文字・小文字を区別するので注意して下さい。

正規表現を使ったマッチング方法

Javascriptでは、文字列や正規表現パターンが含まれるかどうかの確認に、下記の2つのメソッドが利用できます。

  1. Stringオブジェクトの.search()
  2. RegExpオブジェクトの.test()

1 Stringオブジェクトの.search()

String オブジェクトの関数.search() は正規表現を実行する関数です。indexOf() と異なり、正規表現を使ったパターン検索を利用できます。返り値はidexOf()同様に、マッチが見つかればそのインデックスか、含まれない場合は「−1」の値を返します。

// 検索対象の文字列
var subject = 'I am your father.';

// 'father'が含まれるかどうか確認。
if ( subject.search(/(fa|mo)ther/) !== -1) {
  alert('含まれています。');
} 

2RegExpオブジェクトの.test()

正規表現のオブジェクトであるRegExpには、正規表現を利用するための関数が実装されています。.test() は含まれるかどうかを単にテストするためのメソッドで、返り値の true か false で結果を知ることができます。

// 正規表現オブジェクトをリテラルで定義
var pattern = /(fa|mo)ther/;

// パターンが含まれるかどうか確認
if ( pattern.test('I am your father.') !== -1) {
  alert('含まれています。');
}

【参考】Javascript で正規表現を利用できる関数

参考まで、Javascirpt で正規表現を利用できる関数の一覧です。

メソッド説明
.exec()文字列中で一致するものを検索する。結果情報の配列を返す
.test()文字列中で一致するものがあるかをテストする。true または false を返す

こちらの記事でも詳しく正規表現について触れています。ぜひご一読下さい。

参考リンク

正規表現を使えば「含まれない」といった表現もマッチできます。こちらの記事をご覧ください。

MDNで詳しい関数の仕様が記載されています。

ちなみに、配列オブジェクトも同じ名前の別のメソッドを実装しています。紛らわしいのでリンクを付けておきます。