Lookahead: mask all but the last four digits
A regex exercise from Regexdrill. Solve it with a pattern box with live highlighting in your browser, checked against hidden test strings, and it is checked the moment you submit.
The task
Each line is an account number made only of digits. Replace every digit with * except the last four. Numbers with four digits or fewer stay unchanged.
What this exercise teaches
\d(?=\d{4}) matches a digit only if at least four digits come after it, so the last four never qualify. Because the lookahead takes up no characters, the next match can start at the very next digit.
A hint if you get stuck
Match one digit at a time, but only when four more digits follow it: \d(?=\d{4}). The lookahead checks them without using them up.
Try it now, free, no account needed
Every exercise on Regexdrill is free to try. Open it on the practice page, solve it, and get instant feedback with a hint. The worked solution opens once you solve it or after two tries.
Open this exerciseMore exercises in Advanced
- Lookahead: amounts before USDFree
- Lookahead: strip leading zerosFree
- Negative lookahead: not starting with unFree
- Negative lookahead: lines without a wordFree
- Lookbehind: amounts after $Free
- Negative lookbehind: positive numbers onlyFree
- Lazy vs greedy: the first quoted textFree
- Named groups: year, month, dayFree
- Password rules with lookaheadsFree
- Lookahead: thousands separatorsFree
- Word boundaries: replace a whole wordFree
- Unicode letters with the u flagFree
- Multiline flag: TODO linesFree
- The s flag: comments that span linesFree
- Backreference across lines: duplicate linesFree
- Multiline: trailing whitespace on every lineFree
- Named groups in a replacementFree
- Multiline anchors: lines ending in a semicolonFree
- Negative lookahead: numbers that are not percentagesFree