カテゴリ: 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の正規表現でlookahead・lookbehindを使う応用例
New2
TypeScript
TypeScriptの配列型・タプル型の使い方と違いをやさしく解説!初心者でも理解できる型の基本
New3
TypeScript
TypeScriptでimportとrequireの違いを理解しよう!モジュール管理の基本
New4
JavaScript
JavaScriptの正規表現でグループ化・キャプチャを活用する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの正規表現で繰り返し指定(* + ? {n,m})を学ぼう
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptで非同期イテレーター(for await of)を活用する
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの正規表現で任意の1文字(.)や文字クラスを使う方法
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptの日時操作Tips!実務で役立つテクニック集
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptの正規表現で先頭・末尾を指定する^と$の使い方
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptで日時の差分を計算する方法|ミリ秒・日数の応用テクニック
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方