Knowledge Diary

【JavaScript】文字列内に特定の文字が含まれているか確認する方法を解説【includes/indexOf/test/startsWith/endsWith】

Published: Updated:

【JavaScript】文字列内に特定の文字が含まれているか確認する方法を解説【includes/indexOf/test/startsWith/endsWith】

こんにちは、Webデザイナーの 夢拓(Muhiro)です。

JavaScriptで「文字列に特定の文字が含まれているか」を調べたいとき、どんな方法が思い浮かびますか?
includes()indexOf()など、さまざまな手段がありますが、目的や仕様に応じて最適なメソッドを選ぶことが重要です。

この記事では、JavaScriptで文字列検索を行う複数の方法と、それぞれの違いや使い分け方を詳しく解説します。

JavaScriptの文字列処理において、基本的な検索から応用的な条件チェックまで学びたい方に向けた記事です。
特に、入力バリデーションや検索機能の実装を検討している方には、実務で役立つ知識が得られる内容となっています。

この記事を読むことで、JavaScriptの文字列検索において、実践的なテクニックを使って最適な検索方法を実装できるようになります。
基本構文の理解だけでなく、柔軟で高度なバリデーション処理の基礎を身につけることができます。

それでは、どうぞ!

Index

CloseOpen

JavaScriptで文字列を検索する基本:どんなときに使う?

JavaScriptで文字列に特定の文字や単語が含まれているかを確認する場面は多く存在します。
たとえば、メールアドレスの入力チェック、URLの形式確認、パスワード内の文字種チェックなど、日常的なバリデーション処理で活用されます。
このような処理を正確に行うために、文字列内の検索メソッドの基本を理解しておくことは重要です。

主に使う文字列検索メソッド

JavaScriptでは、文字列を検索するためにいくつかの代表的なメソッドが用意されています。
使用頻度が高く、実務でもよく登場するのは以下の3つです。

includes()(Boolean)
指定した文字列が含まれているかどうかを true または false で返すシンプルなメソッドです。
部分一致の確認に便利で、検索処理の基本として使われます。
'example@example.com'.includes('@')true
indexOf()(Number)
指定した文字列が最初に現れる位置(インデックス)を返します。
見つからない場合は -1 を返すため、条件分岐に利用されることもあります。
'abcdef'.indexOf('c')2
match()(Array または null)
正規表現と組み合わせて使うことで、柔軟なパターン検索が可能です。
部分一致の抽出や、パターンマッチングの精度が求められる場面で利用されます。
'abc123'.match(/\d+/)['123']
test()(Boolean)
正規表現に対して文字列を与え、一致するかどうかを判定します。
一致すれば true、一致しなければ false を返します。
/\d+/.test('abc123')true
使いどころ: 存在確認・バリデーション向け。
startsWith()(Boolean)
文字列が、指定した文字列で始まっているかどうかを判定します。
'JavaScript'.startsWith('Java')true
使いどころ: 接頭辞チェックやURLのドメイン先頭判定などに便利。
endsWith()(Boolean)
文字列が、指定した文字列で終わっているかどうかを判定します。
'index.html'.endsWith('.html')true
使いどころ: ファイル拡張子の判定や、語尾の確認などに活用されます。
some()(Boolean)
配列内の少なくとも1つの要素が、条件を満たすかを確認します。
[1, 2, 3].some(num => num > 2)true
使いどころ: 条件を1つでも満たす要素があるかをチェックしたいときに有効です。
文字列検索では、複数のキーワードがいずれか含まれているか確認する場面で使用されます。

文字列検索メソッド比較一覧表

メソッド名 戻り値の型 主な用途 特徴・備考
includes() Boolean 部分一致の有無 大文字小文字を区別。シンプルなチェックに最適。
indexOf() Number 部分一致の位置 見つからなければ -1。先頭から検索。
lastIndexOf() Number 最後の一致位置 後方から検索。複数出現時に有効。
startsWith() Boolean 文字列の冒頭チェック 指定文字列で始まるかどうかを判定。
endsWith() Boolean 文字列の語尾チェック 指定文字列で終わるかどうかを判定。
match() Array / null 正規表現で一致取得 一致部分を配列で返す。全体や複数一致に対応。
test() Boolean 正規表現で一致判定 RegExp に対して使用。文字列に直接使えない。
search() Number 正規表現の一致位置 最初の一致位置を返す。なければ -1
some() Boolean 配列と併用して条件チェック includes() と組み合わせて NG ワードチェック等に便利。

これらのメソッドは、目的に応じて使い分けることで、効率的かつ正確な文字列処理を実現できます。
次章では、これらの具体的な使い方や、注意点について詳しく見ていきましょう。

includes()の使い方と基本構文【ES6以降】

includes()メソッドは、ECMAScript 2015(ES6)以降で導入された文字列検索メソッドです。
対象の文字列に、指定した部分文字列が含まれているかどうかを真偽値(true / false)で返します。
このメソッドは読みやすく直感的で、簡潔なバリデーション処理に非常に適しています。

JavaScript

const str = 'https://example.com';
console.log(str.includes('https')); // true

indexOf()との違いとは?使い分けのポイント

indexOf()は、検索文字列が最初に出現するインデックス番号を返すメソッドです。
一致する文字列が存在しない場合は -1 を返します。
includes()に比べてやや冗長ですが、古い環境でも広く使えるため互換性の高い手法として有効です。

JavaScript

const str = 'username@example.com';
if (str.indexOf('@') !== -1) {
  console.log('メールアドレスとして有効です');
}

正規表現(RegExp)を使った文字列の検索方法

正規表現(RegExp)を使用することで、より柔軟で複雑な検索が可能になります。
たとえば、数字だけを含むか、大文字で始まる単語があるか、複数の条件を組み合わせて判定する場合などに用いられます。
JavaScriptでは .test().match() を使用して正規表現による検索を行います。

JavaScript

const email = 'info@example.com';
const pattern = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/;
console.log(pattern.test(email)); // true

部分一致だけでなく前方一致・完全一致のチェック方法

文字列を検索する際には、「部分一致」「前方一致」「完全一致」といった検索方法の違いを把握しておくと便利です。
startsWith()は文字列が特定の語で始まっているかを確認し、endsWith()は終わりを確認します。
完全一致は単純な比較演算子 === を使用するのが基本です。

JavaScript

const str = 'Hello World';
console.log(str.startsWith('Hello')); // true
console.log(str.endsWith('World')); // true
console.log(str === 'Hello World'); // true

大文字・小文字を無視してチェックする方法

文字列検索では大文字と小文字の違いによって意図しない結果になることがあります。
そのような場合には、文字列をあらかじめ toLowerCase()toUpperCase() に変換してから比較する方法が一般的です。
正規表現を使う場合は、i フラグを使うことでケースインセンシティブな検索が可能です。

JavaScript

const str = 'JavaScript';
console.log(str.toLowerCase().includes('script')); // true

const pattern = /script/i;
console.log(pattern.test(str)); // true

特定の複数文字列が含まれているかどうかを調べる

複数のキーワードのいずれかが含まれているか確認したい場合は、some() メソッドを組み合わせることで実現できます。
また、正規表現のパイプ(|)を使えば、複数語のうちのどれかに一致するかを一括でチェックできます。
いずれもループや関数と併用することで可読性の高いロジックになります。

JavaScript

const str = 'この文章にはJavaScriptという単語が含まれています';
const keywords = ['JavaScript', 'HTML', 'CSS'];
const found = keywords.some(keyword => str.includes(keyword));
console.log(found); // true

条件付きの文字列チェック:関数でのカプセル化

複雑な条件や再利用性を意識するなら、文字列チェックの処理は関数として切り出しておくのが望ましいです。
これにより、DRY原則(Don't Repeat Yourself)に則ったメンテナブルなコードになります。
引数の変更によって柔軟に対応できる構造にしておくことで、将来的な拡張にも対応しやすくなります。

JavaScript

function containsKeyword(text, keywords) {
  return keywords.some(keyword => text.includes(keyword));
}
const result = containsKeyword('今日はReactとVueを学びました', ['Vue', 'Angular']);
console.log(result); // true

この記事に関連するよくあるご質問

Q
includes()で大文字と小文字は区別されますか?
A
はい、区別されます。
検索対象の文字列と、検索文字列の両方の大文字・小文字が一致しない場合、false を返します。
区別しない検索を行うには、事前に toLowerCase() などで統一してください。
Q
includes()はどのブラウザで対応していますか?
A
includes() は ES6(2015)で導入され、主要ブラウザ(Chrome, Edge, Firefox, Safari)ではすべて対応しています。
ただし、Internet Explorerでは非対応です。
Q
正規表現とincludes()のどちらを使えばいいですか?
A
単純な部分一致や1語だけのチェックには includes() を使う方がシンプルです。
パターンマッチングや複数条件がある場合は、正規表現の使用を検討しましょう。

まとめ

いかがでしたでしょうか?
今回は、JavaScriptで文字列に特定の文字が含まれているか確認する方法について解説しました。

今回のポイントをまとめますと、次のとおりです。

他にもJavaScriptに関する実用テクニックを随時発信しています。
「役に立った」と思っていただけた方は、ぜひブックマークやSNSでのシェアをお願いいたします!

最後までお読みいただきありがとうございました!

免責事項

  • 当ブログでは、執筆者の経験に基づいた技術情報や知識を提供していますが、その正確性や普遍性を保証するものではありません。情報は執筆時点のものであり、技術の進展により古くなる可能性があります。これらの情報を利用する際は、自己責任で行ってください。必要に応じて専門家の助言を求めることをお勧めします。
  • 当ブログで提供するプログラムコードは、執筆者の最善の知識に基づいていますが、その正確性や完全性を保証するものではありません。コードの利用や実行により生じた損害や問題については、一切の責任を負いかねます。コードの使用は、自己責任で行ってください。
  • 当サイトで使用しているスクリーンショット画像について、著作権はサイトの権利者に帰属します。掲載に不都合がある場合、お手数ですがお問い合わせフォームよりご連絡ください。
  • 当サイトからリンクよって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いかねますのでご了承ください。
  • 当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。