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つのメソッドが利用できます。
- Stringオブジェクトの.search()
- 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で詳しい関数の仕様が記載されています。
ちなみに、配列オブジェクトも同じ名前の別のメソッドを実装しています。紛らわしいのでリンクを付けておきます。