regexxor

Exclusive Or in Regular Expression


Looking for a bit of regex help. I'd like to design an expression that matches a string with "foo" OR "bar", but not both "foo" AND "bar"

If I do something like...

/((foo)|(bar))/

It'll match "foobar". Not what I'm looking for. So, how can I make regex match only when one term or the other is present?

Thanks!


Solution

  • You can do this with a single regex but I suggest for the sake of readability you do something like...

    (/foo/ and not /bar/) || (/bar/ and not /foo/)