Regex Lookbehind
Summary: in this tutorial, you’ll learn about the regex lookbehind and negative lookbehind.
Introduction to the regex lookbehind
Suppose you have the following string:
'2 chicken cost $40';
 Code language: JavaScript (javascript)
And you want to match the number 40 after the $ sign but not the number 2. To do that, you use a lookbehind. A lookbehind matches an element only if there’s an element before it.
Like the lookahead, the lookbehind has the following syntax:
(?<=B)A
This pattern matches A if there is B before it.
The following example uses a lookbehind to match a number that has the $ sign before it:
$pattern = '/(?<=\$)\d+/';
 $str = '2 chicken cost $40';
if (preg_match($pattern, $str, $matches)) {
 print_r($matches);
 }
Code language: HTML, XML (xml)
Output:
Array
 (
 [0] => 40
 )Code language: PHP (php)
In the following regular expression:
'/(?<=\$)\d+/'Code language: JavaScript (javascript)
- The (?<=\$)is the lookbehind that matches the following has the$sign. Since$has a special meaning in the pattern, you need to escape it using the backslash (\).
- The \d+matches a number with one or more digits.
The regular expression matches a number that has the $ before it.
Negative lookbehind
The negative lookbehind has the following syntax:
(?<!B)A
It matches A if there’s no B before it.
The following example uses a negative lookbehind to match a number that doesn’t have the $ sign before it:.`
<?php
$pattern = '/(?<!\$)\d+/';
 $str = '2 chicken cost $40';if (preg_match($pattern, $str, $matches)) {
 print_r($matches); // 40
}
Code language: PHP (php)
Output:
Array
 (
 [0] => 2
 )Code language: PHP (php)
In the regular expression:
'/(?<!\$)\d+/'Code language: JavaScript (javascript)
- The (?<!\$)is a negative lookbehind that does not match the$sign.
- The \d+matches a number with one or more digits.
Summary
- A lookbehind (?<!B)Amatches A only if there’s B before it.
- A negative lookbehind (?<!B)Amatches A only if there’s no element before it.