Is it possible to do string negation in regular expressions? I need to match all strings that do not contain the string ".."
. I know you can use ^[^\.]*$
to match all strings that do not contain "."
but I need to match more than one character. I know I could simply match a string containing ".."
and then negate the return value of the match to achieve the same result but I just wondered if it was possible.
views:
2557answers:
3
+7
A:
You can use negative lookaheads:
^(?!.*\.\.).*$
That causes the expression to not match if it can find a sequence of two periods anywhere in the string.
chaos
2009-07-20 14:17:09
I think he wants to not match two full stops, not three. Otherwise I'd +1 ;)
Mark Pim
2009-07-20 14:19:13
Ah, ninja editing skills :) +1
Mark Pim
2009-07-20 14:20:37
A:
Have a look at this post: http://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group
Narayan Raman
2009-07-20 14:19:28
A:
^(?:(?!\.\.).)*$
will only match if there are no two consecutive dots anywhere in the string.
Tim Pietzcker
2009-07-20 14:21:25