How can I invert a regular expression in JavaScript?

Try:

/^(?!.*foobar)/.test('[email protected]')

A (short) explanation:

^          # start of the string 
(?!        # start negative look-ahead
  .*       # zero or more characters of any kind (except line terminators)
  foobar   # foobar
)          # end negative look-ahead

So, in plain English, that regex will look from the start of the string if the string ‘foobar’ can be “seen”. If it can be “seen” there is no* match.

* no match because it’s negative look-ahead!

More about this look-ahead stuff: http://www.regular-expressions.info/lookaround.html But Note that JavaScript only supports look-aheads, no look-behinds!

Leave a Comment