Given a regular expression, I can easily decide where to start looking for a match from in a string using lastIndex
.
Now, I want to make sure that the match I get doesn’t go past a certain point in the string.
I would happily enclose the regular expression in a non-capturing group and append, for instance, (?<=^.{0,8})
.
But how can I achieve the same goal without lookbehinds, that still aren’t globally supported?
Note:
- While it might be the only reasonable fallback, slicing the string is not a good option as it results in a loss of context for the search.
Example
https://regex101.com/r/7bWtSW/1
with the base regular expression that:
- matches the letter ‘a’, at least once and as many times as possible
- as long as an ‘X’ comes later
We can see that we can achieve our goal with a lookbehind: we still get a match, shorter.
However, if we sliced the string, we would lose the match (because the lookahead in the base regular expression would fail).