DevToolBox

正規表現の Lookbehind はどのブラウザで使える?

(?<=...)(?<!...) は強力ですが、長らく Safari が未対応で本番投入を ためらわれた機能でした。2026年現在は主要ブラウザすべてで動作しますが、対応バージョンを跨ぐ プロダクトでは今も注意が要ります。

JavaScript regex lookbehind is supported in all major evergreen browsers today, but the Safari/iOS cut-off (16.4, March 2023) still matters if you target older devices.

TL;DR

1. ブラウザ対応表 / Browser support

ランタイム / Runtime対応開始 / Since備考 / Notes
Chrome / Edge62 (2017)可変長対応
Firefox78 (2020)可変長対応
Safari (macOS)16.4 (2023)それ以前は SyntaxError
iOS Safari16.4 (2023)iPhone 5s/6 系は更新停止で非対応
Node.js10+V8 準拠

2. 互換のための代替パターン / Fallback patterns

Safari 16.3 以前を含めて配信する場合、lookbehind を避けてキャプチャで書き換えます。

// ❌ 直接 lookbehind
"$100".replace(/(?<=\$)\d+/, m => Number(m) * 1.1);

// ✅ 代替: 先頭をキャプチャして残す
"$100".replace(/(\$)(\d+)/, (_, $, n) => $ + Number(n) * 1.1);

3. 実害が出るケース / Where it actually breaks

4. いつ lookbehind を使うべきか / When to use

Node.js (サーバ) とモダン Chrome/Edge の社内ツールでは積極的に使って構いません。 一方 B2C の公開 Web、メルマガ HTML の動的差し替え、広告配信タグなど、古い iOS が残る領域では 代替パターンを選ぶのが安全です。

5. English summary

Regex lookbehind ((?<=x), (?<!x)) is universally supported in modern Chrome, Edge, Firefox and Node. Safari and iOS added it in 16.4(March 2023). For public-facing sites that still serve long-tail iOS users, prefer a capture-group fallback — a single unsupported regex throws SyntaxError at parse time and takes the whole script with it.

関連ツール / Related tools

関連ガイド / Related guides