カテゴリ: 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
TypeScript
TypeScriptでPromiseの型推論をマスター!非同期処理とasync/awaitの基礎講座
New2
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
New3
JavaScript
JavaScriptのBigInt型とは?大きな整数の扱い方と活用例
New4
JavaScript
JavaScriptでスクロール位置を取得・操作する方法を完全解説!scrollTopなどDOM操作入門
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのクロージャーとは?仕組みと実践例をやさしく解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptで新しい要素を作成する方法(createElement, appendChildなど)
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのプロジェクトをtscでビルドする基本操作を解説!初心者にもわかるステップバイステップ
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptでフォーム要素を操作するDOMテクニックを初心者向けに徹底解説
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで親要素・子要素・兄弟要素を取得する方法を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptでnull・undefinedを型ガードするテクニックを徹底解説!初心者でも理解できる安全なコードの書き方
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】