I am having a problem using the following regex. It works fine in regexr and rubular but it gives me an error when running it on node.js. I am fairly new to using regex and i'm not sure what i'm doing wrong. It will work if I knock off the (?<= )
so I presume that is the problem.
I'm trying to match 'is' with a leading and trailing space using /(?<= )is(?= )|==/g
Example with test words:
http://regexr.com?33781
Node error output
temp = temp.replace(/(?<= )is(?= )|==/g, '===');
^
SyntaxError: Invalid regular expression: /(?<= )is(?= )|==/: Invalid group
at new RegExp (unknown source)
Lookahead allows to add a condition for “what follows”. Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before it.
The good news is that you can use lookbehind anywhere in the regex, not only at the start.
Lookahead assertions are part of JavaScript's original regular expression support and are thus supported in all browsers.
Lookarounds are zero width assertions. They check for a regex (towards right or left of the current position - based on ahead or behind), succeeds or fails when a match is found (based on if it is positive or negative) and discards the matched portion.
JavaScript regex does not support lookbehind at all.
Sources:
However, you can fake it in some cases.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With