It is not an assertion: it still consumes a character from the subject string, and fails if the current pointer is at the end of the string.
Par exemple, [aeiou] représentera "A" ou "a", et [^aeiou] n'acceptera pas ni "A", tandis que sans l'option, elle l 'accepterait.