Module lessons (3/4)
Lookbehind: `(?<=...)` `(?<!...)`
Lookbehinds are the mirror image of lookaheads: they look before the current position, still zero-width.
(?<=...)-- positive lookbehind: the pattern must precede.(?<!...)-- negative lookbehind: the pattern must NOT precede.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^The $ is not in the match, but works as a condition: only digits
preceded by the dollar sign match.
Negative lookbehind
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) requires that before the digits there be NO word character:
abc123 is excluded (before 123 there is c, a \w), 456 matches (before
there is a space).
Key difference vs non-capturing group
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits.If you need to extract the "clean" value without the prefix, lookbehind is the right choice.
Lookbehind compatibility in JavaScript
Positive (?<=...) and negative (?<!...) lookbehind check what precedes the current position. In JavaScript, they are supported starting from ES2018; in older browsers or legacy Node.js engines, they would cause syntax compilation errors.
Try it
Extract only the numeric amount (without the $ sign) from the prices in the text.
Show hint
Move \\$ inside a positive lookbehind (?<=\\$): a position condition, not part of the match.
Solution available after 3 attempts
Review exercise
Find every sequence of digits NOT preceded by a letter or digit (i.e., 'isolated' numbers, not parts of code like `abc123`).
Show hint
Use a negative lookbehind (?<!\\w) to exclude when there is a letter or digit before.
Solution available after 3 attempts
Additional challenge
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
Show hint
Move the minus sign - inside a positive lookbehind (?<=-).
Solution available after 3 attempts