JavaScript正規表現の後読みアサーション(Lookbehind)の使い方を実例で解説
後読みアサーション(Lookbehind)とは、あるパターンの直前に特定の文字列や記号が存在する場合にのみ、そのパターンをマッチさせることができるJavaScript正規表現の機能です。マッチ結果には直前のパターン自体は含まれず、あくまで「存在確認の条件」として扱われる点が大きな特徴です。
後読みアサーションの基本構文
後読みアサーションは (?<=パターン) の形式で記述します。例として (?<=\$)\d+ という正規表現を見てみましょう。
(?<=\$): 直前にドル記号($)が存在することを確認する\d+: 1桁以上の数字にマッチする
この組み合わせにより、「$記号の直後に続く数字」だけが抽出され、$記号そのものはマッチ結果に含まれません。
コード例
以下は、文中の金額($50、$99、$121、$150)から数字部分だけを後読みアサーションで取り出すHTMLとJavaScriptの実装例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.sample, .result {
font-size: 20px;
font-weight: 500;
}
</style>
</head>
<body>
<h1>後読みアサーションによる正規表現マッチング</h1>
<div class="sample">テーブル4脚の価格は $50 、$99 、$121 、$150 です。</div>
<div style="color: green;" class="result"></div>
<button class="btn">CLICK HERE</button>
<h3>
上のボタンをクリックすると、後読みアサーションを使ってテーブルの価格を抽出します
</h3>
<script>
let sampleEle = document.querySelector(".sample").innerHTML;
let btnEle = document.querySelector(".btn");
let resEle = document.querySelector(".result");
const priceRegex = /(?<=\$)\d+/g;
btnEle.addEventListener("click", () => {
resEle.innerHTML = "テーブルの価格 = " + sampleEle.match(priceRegex);
});
</script>
</body>
</html>
実行結果
上記のコードをブラウザで開くと、次のように表示されます。

続いて「CLICK HERE」ボタンをクリックすると、後読みアサーションによって$記号を除いた価格の数字だけが配列として抽出され、次のように表示されます。

補足:ブラウザ対応について
後読みアサーションはES2018で正式に仕様へ追加された機能です。Chrome・Firefox・Edgeなどの主要ブラウザでは広くサポートされていますが、Safariでは16.4以降でのみ利用可能です。古いブラウザ環境もサポート対象とする場合は、代替手段(キャプチャグループとの併用など)を検討しましょう。
-
JavaScriptでドキュメントの読み込み状態(readyState)を確認する方法
JavaScriptでドキュメント(ページ)の読み込みが完了しているかどうかを確認するには、document.readyStateプロパティを使用します。このプロパティは、現在のドキュメントの読み込み状況に応じて以下の3つの文字列を返します。loading … ドキュメントがまだ読み込み中の状態interactive … ドキュメントの解析は完了したが、画像などのサブリソースは still 読み込み中の状態complete … ドキュメントとすべてのサブリソースの読み込みが完了した状態以下は、ボタンをクリックしたタイミングでdocument.readyStateの値を判定し、ページの読み込み状
-
JavaScriptの動的インポート(Dynamic Import)の使い方と実装例を解説
JavaScriptの動的インポートとは 動的インポート(Dynamic Import)とは、JavaScriptのモジュールを必要なタイミングで読み込むための機能です。通常の静的なimport文と異なり、import()関数はPromiseを返すため、async/awaitやthen()と組み合わせて柔軟に扱うことができます。 これにより、ユーザーがボタンをクリックしたときなど、実際に必要になった瞬間にだけモジュールを読み込むことが可能になります。 動的インポートの基本構文 import()関数にモジュールのパスを渡すと、そのモジュールが非同期に読み込まれ、Promiseが解決された時点で