If this JavaScript tutorial saves you hours of work, please whitelist it in your ad blocker 😭 and
to support us ❤️ in paying for web hosting and CDN to keep the site running.
概要: このチュートリアルでは、JavaScript の正規表現で X
の前に Y
がある場合に X
にマッチさせる正規表現の Lookbehind(ルックビハインド)の使い方を学びます。
JavaScript の正規表現の Lookbehind(ルックビハインド)の概要
正規表現では、Lookbehind(ルックビハインド)は直前に別の特定の要素があれば要素に一致します。Lookbehind は次の構文があります。
(?<=Y)X
この構文では、直前に Y
があればパターンには X
と一致します。
例えば、次の文字列の中にある数値 1
ではなく 900
にマッチさせたいとします。
'1 computer costs $900'
Code language: JavaScript (javascript)
これを行うには、正規表現に次のように Lookahead(ルックアヘッド)を使用します。
/(?<=\$)\d+/
この正規表現では
(?<=\$)
は直前に文字列リテラル$
があれば要素に一致します。$
は正規表現内の特殊文字であるため、バックスラッシュ\
を使用してエスケープする必要があります。これにより、正規表現エンジンは\$
を文字通りの文字$
として扱います。\d+
は 1 つ以上の数字に一致します。
次の例は、正規表現で Lookbehind(ルックビハインド)を使用して直前に $
記号のある数字にマッチさせる方法を示しています。
const s = '1 computer costs $900';
const pattern = /(?<=\$)\d+/;
const match = s.match(pattern);
console.log(match);
Code language: JavaScript (javascript)
出力
[ '900', index: 18, input: '1 computer costs $900', groups: undefined ]
Code language: JSON / JSON with Comments (json)
ネガティブ Lookbehind(ルックビハインド)
Lookbehind(ルックビハインド)を否定するには、次のような構文を持つネガティブ Lookbehind(ルックビハインド)を使用します。
(?<!Y)X
この構文では、直前に ない Y
があれば正規表現エンジンは X
に一致します。次の例は、ネガティブ Lookbehind(ルックビハインド)を持つ正規表現を使用して直前に $
文字のない数字に一致します。
const s = '1 computer costs $900';
const pattern = /(?<!\$)\d+/;
const match = s.match(pattern);
console.log(match);
Code language: JavaScript (javascript)
出力
1
サマリー
- Lookbehind(ルックビハインド)
(?<!Y)X
は、Y
が直前にある場合にのみX
に一致します。 - ネガティブ Lookbehind(ルックビハインド)
(?<!Y)X
は、Y
が直前にない場合にのみX
に一致します。
このチュートリアルは役に立ちましたか?