カテゴリ: JavaScript 更新日: 2026/01/17

JavaScriptの正規表現でlookahead・lookbehindを使う応用例

JavaScriptの正規表現でlookahead・lookbehindを使う応用例
JavaScriptの正規表現でlookahead・lookbehindを使う応用例

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptの正規表現で前後の条件を考慮して文字列を検索することはできますか?」

先生

「できます。lookahead(先読み)やlookbehind(後読み)を使うと、特定の文字列の前後の条件をチェックしながらマッチさせることができます。」

生徒

「先読みや後読みって少し難しそうです。具体的にはどういうことですか?」

先生

「簡単に言うと、ある文字列の後ろや前に特定の条件がある場合だけマッチさせたいときに使います。文字自体はマッチ結果に含めずに条件として使えるのが特徴です。」

1. lookaheadとは?

1. lookaheadとは?
1. lookaheadとは?

lookahead(先読み)は、文字列の後に特定のパターンが続く場合にだけマッチさせる方法です。正規表現では (?=…) と書きます。


const text = "apple pie, apple tart, banana pie";
const regex = /apple(?= pie)/g;
const result = text.match(regex);
console.log(result); // ["apple", "apple"]

この例では、「apple」の後に「pie」が続く場合だけマッチします。「apple tart」にはマッチしません。

2. lookbehindとは?

2. lookbehindとは?
2. lookbehindとは?

lookbehind(後読み)は、文字列の前に特定のパターンがある場合だけマッチさせる方法です。正規表現では (?<=…) と書きます。


const text = "apple pie, banana pie";
const regex = /(?<=banana )pie/g;
const result = text.match(regex);
console.log(result); // ["pie"]

この例では、「banana 」の後に続く「pie」のみマッチします。「apple pie」はマッチしません。

3. 否定のlookahead・lookbehind

3. 否定のlookahead・lookbehind
3. 否定のlookahead・lookbehind

特定の文字列が前後にない場合だけマッチさせたいときもあります。否定の先読みは (?!…)、否定の後読みは (?<!…) です。


const text = "apple pie, apple tart";
const regex = /apple(?! pie)/g;
const result = text.match(regex);
console.log(result); // ["apple"]

この例では、「apple」の後に「pie」が続かない場合のみマッチします。「apple pie」は無視され、「apple tart」がマッチします。

4. 実用例: 文字列置換で応用

4. 実用例: 文字列置換で応用
4. 実用例: 文字列置換で応用

lookahead・lookbehindを使うと、置換や抽出でより精密な操作が可能です。例えば、単語の前後の条件によって置換する場合です。


const text = "I have a cat and a dog.";
// "a " の後に "cat" が続く場合だけ "cat" を "kitten" に置換
const newText = text.replace(/(?<=a )cat/g, "kitten");
console.log(newText); // "I have a kitten and a dog."

このように、特定の条件に基づいた文字列操作ができるのがlookahead・lookbehindの魅力です。

5. lookahead・lookbehindを使うポイント

5. lookahead・lookbehindを使うポイント
5. lookahead・lookbehindを使うポイント
  • 文字列自体はマッチ結果に含めずに条件として使える
  • 前後の条件を考慮した検索や置換に便利
  • 否定条件も使えるので除外したい場合にも対応可能
  • 初心者はまず簡単な例で慣れることが大切

正規表現は最初難しく感じますが、lookahead・lookbehindを覚えると文字列操作の幅が大きく広がります。

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのループ内で配列の要素を削除する方法を初心者向けに解説!
New2
JavaScript
JavaScriptのループでインデックス番号を活用するポイントを初心者向けに解説!
New3
TypeScript
TypeScriptのincremental設定でビルド高速化!初心者向けコンパイル設定ガイド
New4
JavaScript
JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのイベント処理で複数の関数を実行する方法
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのbreak文・continue文の使い方と違いを理解しよう