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.
            Asked
            
        
        
            Active
            
        
            Viewed 5.7k times
        
    35
            
            
         
    
    
        chaos
        
- 122,029
- 33
- 303
- 309
 
    
    
        Paul Bevis
        
- 831
- 1
- 8
- 16
- 
                    Linked: [Regular Expressions and negating a whole character group](http://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group) – Unihedron Sep 29 '14 at 01:46
2 Answers
42
            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
        
- 122,029
- 33
- 303
- 309
5
            
            
        ^(?:(?!\.\.).)*$
will only match if there are no two consecutive dots anywhere in the string.
 
    
    
        Tim Pietzcker
        
- 328,213
- 58
- 503
- 561